You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将本地Git仓库及GitHub仓库B同步至原仓库A的最新状态?

同步个人fork仓库(B)及本地副本到原仓库(A)的完整步骤

别担心,完全不用删本地文件或者远程仓库!这是Git协作中非常常见的场景,我给你一步步拆解操作:

1. 先给本地仓库关联原仓库A(如果还没设置的话)

首先你需要把原仓库A添加为本地仓库的「上游远程仓库」(通常命名为upstream),这样才能拉取它的更新。在本地仓库的终端里执行:

git remote add upstream <原仓库A的Git地址>

比如原仓库A的地址是git@github.com:xxx/repo-A.git,就替换成这个地址。

执行完可以用下面的命令验证是否添加成功:

git remote -v

你会看到origin(指向你的仓库B)和upstream(指向原仓库A)两个远程地址。

2. 拉取原仓库A的最新更新

接下来把原仓库A的所有最新提交拉到本地(这一步不会修改你本地的代码,只是把更新下载下来):

git fetch upstream

3. 合并原仓库的更新到你的本地分支

假设你平时用的是main分支(如果是其他分支比如master,替换成对应的分支名):
首先切换到你的本地main分支:

git checkout main

然后把原仓库A的main分支更新合并到你的本地main分支,这里有两种常用方式:

  • 方式一:用merge(推荐新手,保留完整提交历史)
    执行:

    git merge upstream/main
    

    这种方式会生成一个新的合并提交,把你的提交和原仓库的提交整合在一起,历史记录会保留分叉的痕迹,对新手更友好。

  • 方式二:用rebase(让提交历史更整洁)
    如果你希望提交历史是线性的,没有分叉,可以用rebase:

    git rebase upstream/main
    

    注意:如果你的本地main分支已经推送到过仓库B,执行rebase后需要用git push origin main --force强制推送(因为rebase改写了提交历史),所以如果你和其他人共享仓库B的话,谨慎使用这种方式。

4. 处理合并冲突(如果有的话)

如果原仓库A的更新和你的本地修改有重叠,Git会提示冲突。此时你需要:

  1. 打开提示冲突的文件,找到标记<<<<<<<(你的代码)、=======(原仓库的代码)、>>>>>>>的部分
  2. 手动修改这些内容,保留你需要的代码,删除冲突标记
  3. 修改完后,执行git add <冲突文件名>标记冲突已解决
  4. 最后执行git commit完成合并(如果是merge的话),或者git rebase --continue(如果是rebase的话)

5. 把同步后的代码推送到你的仓库B

最后把本地同步好的分支推送到你的远程仓库B:

git push origin main

这样你的仓库B就和原仓库A的最新版本一致了,后续再修改、提PR也都是基于最新代码的。

额外小贴士

  • 如果本地有未提交的修改,先执行git stash暂存起来,同步完成后再用git stash pop恢复
  • 如果是你的开发分支(比如feature-xxx)需要同步,同样可以切换到该分支,然后执行merge upstream/main或者rebase upstream/main,再推送到仓库B对应的分支

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:25:10