如何将分叉存储库的历史记录与主存储库的历史记录同步?



我是git的新手,我刚刚分叉了一个存储库并对其进行了一些更改。过了一段时间,主存储库的历史发生了变化。我该怎么做,这两个回购有相同的历史?

我知道,如果历史记录不相同,拉取请求会出现问题。

有三种方法可以做到这一点:

  1. 您可以将上游(例如github上的存储库(与当前分支合并,这样您就可以毫无问题地将更改推送到上游

执行git fetch,然后您将希望将提取的内容与当前工作分支合并,如果您在master上,则可以使用git merge origin/master进行合并。然后,在提交并向上游推送更改之前,您可能需要解决合并冲突。

  1. 您可以创建一个分支并在那里提交当前更改,然后向上游拉取以保持主分支的最新状态,然后在机器上将新分支合并到主分支中,然后推送更改或使用存储库的web管理器工具(例如:github拉取请求(,这需要两个分支之间没有冲突

对于这个,首先使用git checkout -b <branch name>进行分支,然后提交并推送您的更改。之后,如果你想在你的机器上做这件事,你必须用与第一种方法相同的步骤更新master,只需通过执行git checkout master来确保你在master上。之后,您可以将您在另一个分支上所做的更改合并回git merge <branch name>。修复合并冲突,然后提交并推送。如果你想在github或你选择的web repo上进行,如果存在合并冲突,你必须首先将master合并到你的新分支中:git fetch,然后是git merge origin/master,修复冲突,提交和推送,然后使用web ui进行pull/merge请求。

  1. 您可以隐藏更改,更新分支,然后从隐藏中取回更改

先用git add,然后用git stash进行更改,然后像第一种方法一样将本地分支更新到上游,然后使用git stash pop,修复冲突,提交并推送。

最新更新