一尘不染

如何更新或同步 GitHub 上的分叉存储库?

javascript

我分叉了一个项目,应用了几个修复程序并创建了一个被接受的拉取请求。几天后,另一位贡献者进行了另一项更改。所以我的叉子不包含那个变化。

我怎样才能把那个零钱放到我的叉子里?当我有进一步的更改要贡献时,是否需要删除并重新创建我的分叉?或者有更新按钮吗?


阅读 260

收藏
2022-01-09

共1个答案

一尘不染

在分叉存储库的本地克隆中,您可以将原始 GitHub 存储库添加为“远程”。(“远程”就像存储库 URL 的昵称 -origin例如,是一个。)然后您可以从该上游存储库中获取所有分支,并重新设置您的工作以继续在上游版本上工作。就可能如下所示的命令而言:

# Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

如果您不想重写 master 分支的历史记录(例如因为其他人可能已经克隆了它),那么您应该将最后一个命令替换为git merge upstream/master. 但是,为了进一步发出尽可能干净的拉取请求,最好重新设置基础。


如果你已经将你的分支重新建立在upstream/master你的基础上,你可能需要强制推送以便将它推送到你自己在 GitHub 上的分叉存储库。你会这样做:

git push -f origin master

您只需-f在重新定位后第一次使用。

2022-01-09