【Git】git使用 - 冲突conflict的解决演示

冲突的解决

(如果git使用不熟练)建议在push不了时,pull之前。在本地创建一个新的分支并commit到local,以保证本地有commit记录,万一出什么问题,可以找回代码,以免代码丢失。

(更甚者,把整个文件夹备份,不然出现找不回代码那就开心了)

多人开发时Git下冲突的产生和解决

演示

项目中有一个文件test.txt,其内容为(以下是在github仓库中截得文件内容):

1、保证项目的正确性,先pull到最新版本。

2、修改local的test.txt的文件内容,修改后的内容是:

然后local查看状态,及commit到本地仓库。

3、 (再1之后),修改test.txt,并push到remote。

(以下是我直接在github的仓库编辑提交的。)

查看remote的commit log,可以发现有一次新的提交。

这样就造成了冲突,因为local的test.txt版本与服务器的版本不一致。

4、push本地的commit,发现无法push。

发现需要先 git pull,于是先更新。

pull后,给出了明确的错误提示”Automatic merge failed; fix conflicts and then commit the result.”。

此时查看test.txt的内容:

其中<<<<<<< HEAD 到 ======= 中间的内容是local提交的。

======= 到 >>>>>>> commit-id 是远程仓库中的内容。

(和svn类似。)

如何解决冲突? 删除这些注释,保证test.txt的内容是最终push版本的内容。

修改冲突后的test.txt内容:

特别,在eclipse中即使是解决了冲突,文件的冲突图标还在,但并不影响commit&push。如下:

5、冲突解决后,在git status可以看到当前的文件状态:

(特别需要注意的是当前分支会处在一个MERGING状态下,以及刚才处理的冲突文件test.txt处于Unmerged paths下。)

根据提示,用git add test.txt,然后在git commit和git push。

此时去看remote中的test.txt内容和commit log:

时间: 2024-10-10 17:54:37

【Git】git使用 - 冲突conflict的解决演示的相关文章

Git 分支管理和冲突解决

创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. git checkout newname 检出分支,即切换到名叫newname的分支. git checkout –b newname master 这个命令将上面两个命令合并:在master分支上创建分支newname分支并检出到该分支. 合并分支间的修改 Merge 合并操作将两条或多条分支合并到一

四、git学习之——分支管理、解决冲突

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN! 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险. 现在有了分支,就不用怕了.你

Git下的冲突解决

冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动merge,repo sync会自动rebase,所以git pull和repo sync也会产生冲突.当然git rebase就更不用说了. 冲突的类型 逻辑冲突 git自动处理(合并/应用补丁)成功,但是逻辑上是有问题的. 比如另外一个人修改了文件名,但我还使用老的文件名,这种情况下自动处理是能成

git&lt;git rebase冲突解决&gt;

git rebase 使用总结: 使用git rebase 修改以前已经提交的内容 比如要修改之前的commit的 hashcode为:187f869c9d54c9297d6b0b1b4ff47d2ec781a55e 1,git rebase 187f869c9d54c9297d6b0b1b4ff47d2ec781a55e^ --interactive --退回到要修改的commit的前一个点上,执行后,git会调用默认的vi编辑器显示commit到最新commit的所有记录,把我们要修改的那一

Git分支合并冲突解决(续)

接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时,分支处于 无分支 状态,创建并切换到新分支(git checkout -b conflict),从而解决HEAD游离状态: (2)放弃此次rebase操作(git rebase --abort): (3)在dev分支上merge新分支,出现冲突(git merge conflict): (4)冲突修

如何解决git提交代码冲突

当我们使用git提交代码时,别人可能也同时修改了我们修改的文件,但是别人的先合入到配置库里边,这样当我们的提交要合入时,就会产生冲突,可以使用以下步骤来解决冲突: (1) git rebase    分支名称   本地分支名称 (2)rebase之后,就会显示冲突,到目标文件进行修改 (3)git add . (4)git rebase --continue (5) git rebase 分支名称   本地分支名称 (6)repo sync (7)repo upload 如此之后,即可提交代码

git学习之旅(三)——合并冲突(conflict)

「情况1」同一文件内容冲突 cd ~/user2/sample git pull echo "Hello,User2" >> user.txt git add . git commit -m "user2 conflict commit" git push origin master cd ~/user1/sample echo "Hello,User1" >> user.txt git pull 由于发生了冲突不能合并新

Git常用命令(三)解决cherry-pick和rebase冲突

git fetch [email protected]:mediaTek/8127.git master_mlc git cherry-pick ea196a1c06ab4afe9ee49f06751e4c73c38b95e8(master_mlc上面的提交) 出现冲突: error: could not apply ea196a... ***** hint: after resolving the conflicts, mark the corrected paths hint: with '

[git] git拉取远程仓库,同步远程分支,解决冲突

[git] git拉取远程仓库,同步远程分支,解决冲突 1.本地仓库存在 本地仓库与远程master已绑定 1.拉取远程分支到本地 git fetch origin dev(远程分支名) 2.在本地创建该分支并切换 git checkout -b dev(本地分支名) origin/dev(远程分支名) 3.把分支代码拉取到本地 git pull origin origin dev(远程分支名) 2.本地仓库不存在 1.克隆远程仓库 git clone 远程库地址 2.拉取远程分支到本地 git