如果你 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】,让我们一起成长,谢谢。