当前位置:   article > 正文

git比较本地仓库和远程仓库的差异并更新本地仓库(实践版)

git比较本地仓库和远程仓库的差异

当我们在多台电脑上进行同一个项目时,经常需要修改提交内容然后在另外一台电脑上进行更新。今天看了一下如何从远程代码仓库获取更新到本地。

1、查看本地仓库对应的远程分支

先查看远程仓库分支

git remote -v 

fetch:代表用于拉取的远程仓库地址

push:代表用于提交的远程仓库地址

2、从远程获取远程仓库最新版本到本地

在本地新建一个temp分支,并将远程仓库的master分支的代码下载到本地分支上面,这样的好处是可以通过IDEA等IDE进行可视化对比两个分支,查看差异

git fetch origin master:temp 

3-1、通过IDEA比对本地代码与下载的temp分支差异

3-2、比较temp分支与本地仓库

git diff temp 

使用 git diff temp 可以比较当前本地仓库和temp仓库之间的差异

4、更新当前的本地仓库

使用git merge temp就可以更新当前的仓库了,更新之后我们把创建的temp文件夹删除就可以了

git merge temp

上面命令是将分支temp上的修改,合并到当前分支

合并结果如遇到【快进-fastforward】

如果遇到【快进-fastforward】情况,则会发生git直接修改当前分支指针指向分支temp所指向的“提交”,比如上图就是fastforward了。

合并结果如遇到【冲突-conflict】

  1. 执行git merge dev时遇到冲突

如果遇到冲突(当前分支与分支123都修改了相同的代码行),会发生automatic merge failed(自动合并失败),git会让你解决冲突,下面例子中是test2.txt:

 

git会在发生冲突时,在当前分支的test2.txt文件中标记冲突:

 

其中========分割两个版本代码

其中<<<<<<<< HEAD  下面  到  =========上面:为当前分支内容

其中>>>>>>>> dev    上面  到  =========下面:为分支123(这里是dev)分支内容

中间用======分割

接下来通过直接手工编辑这个文件,保留合并之后的内容,之后执行:git add test2.txt命令告诉git,冲突以及已经解决了(这里的git add命令与将工作区修改提交到暂存区是不同的涵义)

示例:

 

执行git commit后会提示如下界面,然后直接执行  :wq  即可

 

至此,冲突已经解决掉了:

2、执行git pull时遇到冲突

说明:执行git pull从远程仓库更新代码到本地时,可能产生冲突,图中提示出哪个文件存在冲突:hello.txt

然后直接编辑这个文件,即手工解决冲突(vi工具或者其他工具):

其中展示形式跟冲突提示格式相同。

编辑时使用vi命令

删除当前一行:dd

删除多行:命令模式下::起始行号,结束行号d

然后执行git add hello.txt告诉git冲突已经被解决掉了

然后执行git commit将修改提交到版本库

上图的本地分支比本地远程分支origin/master领先2个提交:

①对文件本身的修改

②冲突解决后产生了一次提交

然后执行git push进行发布远程

删除之前创建的temp临时分支

命令1:git branch -d 分支名

前提是当前分支的修改已经被合并到master分支

说明1:执行删除操作时,当前所在分支不能是被删除的分支:

说明2:执行删除操作时,git会检测如果被删除的分支没有将其修改合并到master分支时,会进行如下提示:

 

命令2:git branch -D 分支名

不管当前分支的修改是否合并到master分支,都进行删除

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/492521
推荐阅读
相关标签
  

闽ICP备14008679号