git处理文件冲突的方法
今天我们来讨论一下当我们期望更新本地仓库代码与远程仓库一致时,发生冲突怎么办?
首先我在git上修改一下文件conflict_test
同时在本地仓库修改一下文件conflict_test
接着我们进行pull操作:
这时我们可以有几个做法:
1、如果自己本地做的修改无关紧要,可以选择让远程仓库的代码来覆盖本地仓库的代码:
git checkout -- conflict_test(冲突的文件名)
git pull origin master(发生冲突的分支名)
在做这些操作之前一定要搞清楚我们是处于哪一个分支,就比如我当前是在master分支上面做了修改文件的操作,而我还有一个branchtest分支,如果我直接pull 远程的branch,是不会有任何冲突,文件也不会有任何改变的(因为我是在master分支上做了修改)。
注意:在这里我们所做的修改和本地仓库还是不一致的,还需要将我们做的修改commit到本地仓库,而push操作则是将修改推送到远程仓库。
2、一般我们从git上面pull代码的时候,如果没有冲突的发生,git会帮我们自动合并代码,当冲突发生后,就需要我们手动处理冲突了:首先我还是和上一步一样,来制造一个冲突。
然后我们pull代码:
git pull origin master
git status //查看当前状态
根据提示,我们先将所做的修改提交到本地仓库:
再pull一次,就会发现
我们再去发生冲突的文件进行处理:
处理完冲突之后,一定要记得将修改好的文件提交到远程仓库,才可以继续pull代码:
git add . //添加当前工作目录文件到index(提交队列)
注:当然如果你不想一次性提交所有文件 可以选择一个个加 :
git add 目录\文件名
git commit -m "some comments" //生成一个commit
git push origin master // 推送远程仓库
又看到一种还原的方法:全部还原,同步于远程仓库
git fetch --all
git reset --hard origin/master
到这里git冲突处理先告一段落吧,感觉自己还不是很太理解远程仓、本地仓和自己的工作区之间的关系,等弄懂了在来分享。