如果你 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 | origin https://github.com/your-username/repository.git (fetch) | 
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 | git log --oneline origin/master | 
确认两者的提交历史一致。
7. 删除和upstream仓库的联系
fork出来的仓库一般是做测试用,不能因为测试影响到真实的线上仓库,所以当对齐了版本之后,最好是移除和upstream的关联,命令如下:
| 1 | git remote remove upstream | 
然后使用命令查看结果:
| 1 | git remote -v | 
| 1 | origin https://github.com/your-username/repository.git (fetch) | 
总结
- 通过添加源仓库作为远程(upstream),你可以获取源仓库的最新代码。
- 使用 git reset --hard upstream/master将你的 Fork 仓库的master分支与源仓库的master完全对齐。
- 使用 git push origin master --force将对齐后的master分支推送到你的 Fork 仓库。
执行这些操作后,你的 Fork 仓库就会与源仓库的 master 分支一致。
写在最后
欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。







