git处理文件冲突的方法

今天我们来讨论一下当我们期望更新本地仓库代码与远程仓库一致时,发生冲突怎么办?


首先我在git上修改一下文件conflict_test

 

 
git处理文件冲突的方法
 

同时在本地仓库修改一下文件conflict_test

 

 
git处理文件冲突的方法
 

接着我们进行pull操作:

 

 
git处理文件冲突的方法
发生冲突,并显示了冲突的位置

这时我们可以有几个做法:

1、如果自己本地做的修改无关紧要,可以选择让远程仓库的代码来覆盖本地仓库的代码:

git checkout -- conflict_test(冲突的文件名)    

git pull origin master(发生冲突的分支名)  

 

 
git处理文件冲突的方法
 

在做这些操作之前一定要搞清楚我们是处于哪一个分支,就比如我当前是在master分支上面做了修改文件的操作,而我还有一个branchtest分支,如果我直接pull 远程的branch,是不会有任何冲突,文件也不会有任何改变的(因为我是在master分支上做了修改)。

 

 
git处理文件冲突的方法
 

注意:在这里我们所做的修改和本地仓库还是不一致的,还需要将我们做的修改commit到本地仓库,而push操作则是将修改推送到远程仓库。

2、一般我们从git上面pull代码的时候,如果没有冲突的发生,git会帮我们自动合并代码,当冲突发生后,就需要我们手动处理冲突了:首先我还是和上一步一样,来制造一个冲突。

 
git处理文件冲突的方法
本地编辑
 
git处理文件冲突的方法
 

 

然后我们pull代码:

 git pull origin master   

 

 
git处理文件冲突的方法
出现冲突

git status       //查看当前状态

 

 
git处理文件冲突的方法
 

根据提示,我们先将所做的修改提交到本地仓库:

 

 
git处理文件冲突的方法
 

再pull一次,就会发现

 
git处理文件冲突的方法
git已经将我们的发生冲突的地方标记出来了

我们再去发生冲突的文件进行处理:

 

 
git处理文件冲突的方法
自行合并代码

处理完冲突之后,一定要记得将修改好的文件提交到远程仓库,才可以继续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冲突处理先告一段落吧,感觉自己还不是很太理解远程仓、本地仓和自己的工作区之间的关系,等弄懂了在来分享。