欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 16:20:12
...

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

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

先查看远程仓库分支

git remote -v 

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

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

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

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

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

git fetch origin master:temp 

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

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

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

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

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

git diff temp 

使用 git diff temp 可以比较当前本地仓库和temp仓库之间的差异
git比较本地仓库和远程仓库的差异并更新本地仓库(实践版)

4、更新当前的本地仓库

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

git merge temp

上面命令是将分支temp上的修改,合并到当前分支git比较本地仓库和远程仓库的差异并更新本地仓库(实践版)

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

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

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

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

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

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

 

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

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

 

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

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

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

中间用======分割

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

示例:

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

 

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

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

 

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

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

2、执行git pull时遇到冲突

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

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

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

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

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

编辑时使用vi命令

删除当前一行:dd

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

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

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

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

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

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

①对文件本身的修改

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

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

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

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

命令1:git branch -d 分支名

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

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

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

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

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

 

命令2:git branch -D 分支名

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

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

 

 

相关标签: git