自学内容网 自学内容网

【Git】Merge本地和远程不在同一commit

1 前言

当本地仓库与远程仓库不在同一个commit上时,即本地仓库的提交历史与远程仓库的提交历史出现了分歧,但我们需要将本地分支merge到远程的主分支。这个情况是我们在团队协作共同开发一套代码时,经常遇到的问题。本文介绍我常用的操作步骤。

2 步骤

  1. 首先,你需要将远程仓库的最新提交拉取到本地,以便了解远程仓库的当前状态,这可以通过以下命令完成:
    git fetch origin
    
    这个命令会将远程仓库(默认名为origin)的所有更新拉取到本地,但不会自动合并或修改你的当前工作目录和分支。
  2. 在拉取远程仓库的最新提交后,你可以使用git log或git diff等命令来比较本地分支与远程分支之间的差异,以便了解需要合并哪些更改。
    使用git log查看提交历史:
    git log --oneline --graph --decorate --all
    
    这个命令将显示一个图形化的提交历史,包括所有分支的提交。
    或者使用git diff比较分支差异:
    git diff master origin/master
    
    这个命令将比较本地master分支与远程origin/master分支之间的差异。
  3. 合并或变基
  • 合并(Merge):合并是将远程分支的更改合并到当前分支中。这会在提交历史中创建一个新的“合并提交”(merge commit),表示两个分支的合并点。
    git merge origin/master
    
  • 变基(Rebase):变基是将一系列提交在当前分支上重新应用,就好像它们是在某个其他提交之后立即创建的一样。这可以使提交历史看起来更加线性和清晰。
    git rebase origin/master
    
    变基过程中也可能出现冲突,同样需要手动解决。与合并不同的是,变基会改变本地分支的提交历史。
    如果你之前使用了变基并且改变了本地分支的提交历史,推送可能会失败,因为远程仓库中可能已经有了基于旧提交历史的新提交。可能需要使用git push --force来强制推送你的更改。
  1. 解决冲突
    合并冲突后,Git 会停止合并过程,并标记出冲突的文件。你可以通过 git status 查看哪些文件存在冲突。打开 Git 标记为冲突的文件。在冲突区域,你会看到 Git 插入的特殊标记,这些标记通常看起来像这样:
    <<<<<<< HEAD  
    这是当前分支(HEAD)的内容  
    =======  
    这是合并进来的分支的内容  
    >>>>>>> 合并分支的名称
    
    你需要手动编辑这些文件,决定如何合并这些更改。你可以保留当前分支的更改、合并分支的更改,或者将两者合并成新的内容。
  2. 推送更改到远程仓库
    解决完冲突之后,需要git add和commit,然后push。

3 小结

在开发过程中,一般都是在分支上开发然后合并到主分支,合并过程会有各种方法做到,本章介绍自己在平时使用的一个流程步骤,大家也可在此基础上继续优化。


原文地址:https://blog.csdn.net/qq_34885615/article/details/143505262

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!