如果你 Fork 了一个仓库,但 Fork 后的 master 分支和源仓库的 master 分支不一样,可以通过以下步骤将你的 Fork 仓库的 master 分支与源仓库的 master 分支对齐。以下是详细步骤:


1. 添加源仓库为远程(upstream

首先,你需要确保你已经将源仓库添加为远程仓库,以便从源仓库拉取最新的代码。

如果你还没有添加源仓库为远程,可以使用以下命令:

1
git remote add upstream <源仓库地址>

例如:

1
git remote add upstream https://github.com/original-owner/repository.git

验证是否添加成功:

1
git remote -v

你应该看到类似以下的输出:

1
2
3
4
origin    https://github.com/your-username/repository.git (fetch)
origin https://github.com/your-username/repository.git (push)
upstream https://github.com/original-owner/repository.git (fetch)
upstream https://github.com/original-owner/repository.git (push)

2. 获取源仓库的最新内容

拉取源仓库的最新代码:

1
git fetch upstream

这会将源仓库的所有分支(例如 upstream/master)拉取到本地,但不会直接更新你的 master 分支。


3. 切换到本地的 master 分支

确保你当前在本地的 master 分支上:

1
git checkout master

4. 将本地的 master 分支重置为源仓库的 master

使用 git reset 命令将本地的 master 分支对齐到源仓库的 master 分支。这会强制更新本地的 master 分支,使其与源仓库的 master 完全一致,包括提交历史和文件

1
git reset --hard upstream/master

注意:这个命令会丢弃你本地 master 分支上的未提交的更改。如果你有重要的本地更改,记得先提交或暂存(使用 git stash)以防丢失。


5. 推送更新到你的 Fork 仓库

将更新后的 master 分支推送到你的 Fork 仓库,覆盖原本的内容:

1
git push origin master --force

注意--force 是必须的,因为你在本地对 master 分支做了 reset 操作,推送时需要强制覆盖远程仓库的 master 分支。


6. 验证同步结果

你可以通过以下命令验证本地和远程仓库的提交历史是否一致:

1
2
git log --oneline origin/master
git log --oneline upstream/master

确认两者的提交历史一致。


7. 删除和upstream仓库的联系

fork出来的仓库一般是做测试用,不能因为测试影响到真实的线上仓库,所以当对齐了版本之后,最好是移除和upstream的关联,命令如下:

1
git remote remove upstream

然后使用命令查看结果:

1
git remote -v
1
2
origin    https://github.com/your-username/repository.git (fetch)
origin https://github.com/your-username/repository.git (push)

总结

  • 通过添加源仓库作为远程(upstream),你可以获取源仓库的最新代码。
  • 使用 git reset --hard upstream/master 将你的 Fork 仓库的 master 分支与源仓库的 master 完全对齐。
  • 使用 git push origin master --force 将对齐后的 master 分支推送到你的 Fork 仓库。

执行这些操作后,你的 Fork 仓库就会与源仓库的 master 分支一致。

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号