`
jjhpeopl
  • 浏览: 108727 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

git merge的容易忽略的问题

    博客分类:
  • git
阅读更多
现在越来越多的使用git来做代码管理工具,它的确比svn更加强大。
前几天在使用git合并代码的时候,发现一个小问题
比如branch1修改文件a.txt中的一处内容,把a=3改为了a=4
同时branch2也修改了文件a.txt,并且是把a=3改为a=5
以上两个分支都进行了提交,并push到了远程仓库
这时,我们为了上线,需要把branch2这个分支合并到branch1中,于是我们在branch1分支上执行了合并命令:git merge origin/branch2
这时候你会发现a.txt文件有冲突,然后我们以branch1的内容为准,即相当于覆盖掉branch2的修改,当你这么做之后,你就会发现a.txt文件没有在add文件列表中。
这是因为a.txt在合并之后,其内容跟branch1原本内容一致,并没有任何修改,git默认的就没有任何可以提交的文件。
由于我是在idea工具下操作的,这时可以清楚的看到当前的分支名为merging branch1,意思很明确,说明分支还处于merge的状态中,没有真正提交上去(注意:虽然没有提交到远程,但是上线却不受影响,因为a.txt的内容是对的,比较恶心)。
这时你用git status命令查看的话,可以清楚的看到有这么一句话:
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)
git比较棒的地方,就是你在使用命令行时都可以自动的提示你该执行什么了,这里也是一样,虽然没有任何可提交的文件,但是这里我们需要git commit一下(利用idea工具的话,我暂时未发现该如何操作)。
当这样操作之后,你就会发现有内容可以push到远程仓库了,这些内容分别为branch2对a.txt的修改,以及合并时的修改。
当然,若一开始就以branch2的修改为准,那就不会遇到以上看不到需提交文件的情况,因为a.txt文件跟branch1有了区别。
同时最近一名实习生问我,为啥有时候合并之后要进行两次提交才行,这种情况是idea工具带来的,若是使用命令操作就没有这个疑问。

 

idea工具当你把a.txt文件合并之后,在没提交到远程仓库之前,你若是又把a.txt文件修改了,这时候你利用idea工具的commit操作,就会先把合并的操作进行提交,刚刚做的修改不会提交,故而分成了两次提交。 
0
0
分享到:
评论

相关推荐

    Git开发操作流程v1.0 Git使用笔记 git常用命令 git常见问题

    Git checkout 忽略修改的文件 7 Git删除已经跟踪的目录 7 Git add 后如何去掉文件 7 Git clone的时候提示密码 8 3、 把liukun.pub拷贝到keydir中 8 Git忽略目录文件 9 Git目录中有空格 9 查看和回退记录 10 3.查看...

    git-2.22.0-2019-06-07更新.rar

    *“git mergetool”学会了提供Sublime Merge(smerge)作为其中之一 它的后端。 *当磁盘索引时调用新的钩子“post-index-change” 文件更改,可以帮助例如虚拟化工作树 实现。 *“git difftool”现在可以在...

    Git-2.23.0/win64/32/mac 多文件

    *“git merge”学习了“--quit”选项,可以清理正在进行中 合并,同时离开工作树和索引仍然一团糟。 *“git format-patch”学习配置以设置默认值 它的--notes = 选项。 *显示具有潜在拼写错误的args的代码 ...

    merge-sub-gits:把多个git用一个大Git进行管理, 需要Nodejs环境

    需要解决问题每个Git仓库保留自己原有的Git功能, 并且不能有丝毫改动, 毕竟它们还需要保持平日的工作Git Submodule 和 SubTree 对原有仓库有改动, 并且不能很好的实现以上需求有一个统一的仓库管理这些所有仓库使用 ...

    class0225-react-admin:react后台管理项目

    React后台管理项目1、git管理创建本地仓库通过create-react-app创建,会自动生成本地仓库(git init)本地版本控制删除多余文件添加了.idea的忽略git add .git commit -m 'xxx'创建远程仓库上github创建仓库本地仓库...

    Git由浅入深之存储原理

    在初始化项目仓库时(gitclone或gitinit),Git会在根目录下创建一个.git目录,其下存放着Git操作和存储相关的内容,该目录结构大致如下:如图中所述:HEAD文件指向当前分支;index文件存储着暂存区的内容信息;refs...

    tygit:git的基本终端接口,写在Node.js上[未维护的项目]

    泰吉特 Admin@G50-70_W8_1LEG C:\Users\... 用额外的参数进行git merge 能够重新加载工作树状态 支持所有终端() 能够忽略文件 性能 打包成可执行文件 从头开始编写一些实现 能够还原一些现有的提交 更好的

    leetcode18java-COMP603-2015:COMP603-2015

    mumble忽略空格。 解析器生成器 解析器生成器是一种在文件中采用语法规范并生成解析代码的工具。 . 每个都有严格的限制。 由于这些需要语法规范,因此您需要了解语法的语法。 这是 Java 的一个。 解析器组合器 其中...

    基于Spring boot+MyBatis+mysql实现的通用权限管理系统源代码+数据库

    实现功能 ...$ npm install babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props babel-preset-es2015 --save-dev $ npm --registry https://registry.npm.taoba

    GCD_CourseProjectPasBesoin:获取和清理数据课程的课程项目

    这个目录会被 Git 忽略,不会被添加到 repo 中。 跑步 只有一种脚本。 像这样运行它: R CMD BATCH run_analysis.R 它会生成一个名为gcd_course_project_tidy_means.txt (我也单独上传)的输出文件。 您可以像...

Global site tag (gtag.js) - Google Analytics