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分支,都进行删除

 

 

  • 20
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
当你使用 `git pull` 时,如果你的本地仓库历史记录与远程仓库不一致,就会出现拒绝合并无关历史的错误。 此时,你可以使用 `git fetch` 命令来获取远程仓库的最新代码,并且创建一个远程分支的本地副本。然后,你可以通过 `git merge` 命令将远程分支合并到你的本地分支上。 具体步骤如下: 1. 使用 `git fetch` 命令获取远程仓库的最新代码,创建一个远程分支的本地副本: ``` git fetch origin ``` 2. 查看本地分支与远程分支的差异: ``` git log HEAD..origin/master --oneline ``` 如果你看到了一条类似于“refusing to merge unrelated histories”的错误信息,说明你的本地仓库历史记录与远程仓库不一致。 3. 使用 `git merge` 命令将远程分支合并到你的本地分支上: ``` git merge origin/master --allow-unrelated-histories ``` 这里的 `--allow-unrelated-histories` 参数告诉 Git 允许合并无关历史。 4. 解决合并冲突。 如果在合并过程中出现了冲突,你需要手动解决它们。你可以使用 `git status` 命令查看哪些文件有冲突,然后打开这些文件并解决它们。解决完冲突之后,使用 `git add` 命令将修改后的文件添加到暂存区,最后使用 `git commit` 命令提交合并的结果。 5. 推送到远程仓库。 完成合并之后,你可以使用 `git push` 命令将本地分支的修改推送到远程仓库。 希望这个回答可以帮助到你!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值