git本地已经有修改但是想同步远程仓库的更新

情况说明:已经本地github仓库上已经修改一部分内容了,但是发现远程仓库更新了,我需要将远程仓库的内容同步到我本地,然后再继续我刚才的修改。

在本地修改了部分代码,包括没有任何commit提交和已经有了部分commit提交的情况

  1. 暂存本地修改
    将你还没提交的修改存入“剪贴板”:
1
git stash
  1. 拉取远程更新
    从远程仓库获取最新代码并合并到本地:
1
2
git pull origin <你的分支名> #情况1: 本地没有任何commit
# git pull --rebase origin <你的分支名> #情况2: 本地已经有commit

注:

  1. 如果想保持提交历史整洁,可以使用 git pull --rebase origin <你的分支名>

  2. 如果已经在本地有commit提交了,此时git pull origin <你的分支名>大概率会有fatal: Need to specify how to reconcile them。是因为你的本地分支和远程分支都有了新的提交,导致它们指向了不同的方向(分叉了)。Git 要求你明确选择如何处理这种分叉。那么想在最新远程代码基础上继续修改的需求,最推荐的做法是使用 rebase。这样可以保持提交历史是一条直线。也就是执行1中所说的git pull --rebase origin <你的分支名>

  3. 恢复本地修改

将刚才暂存的内容取出来:

1
git stash pop
  1. 处理冲突(如果有)
    如果远程更新的代码和你刚才修改的代码在同一行,Git 会提示冲突:
    打开冲突文件,搜索 <<<<<<<、======= 和 >>>>>>> 标记。
    根据实际需求决定保留哪些代码。
    解决后,使用 git add <文件名> 标记为已解决。