106

我有一个本地 git 存储库,它是 github 上存储库的克隆。有人分叉了存储库并在新存储库的新分支中进行了更改。我想将这个新分支移动到我的存储库中(在与主分支合并之前先在本地处理它)。

我尝试创建一个新分支,然后从分叉存储库中提取,但它抱怨因为新分支是主分支的副本以及本地文件更改,所以它说

error: Your local changes to the following files would be overwritten by merge.

那么如何将另一个存储库中的分支拉到本地存储库的新分支中呢?

我希望这是有道理的。如果没有,这是我的存储库:https ://github.com/MatthewLM/cbitcoin

如您所见,有人创建了一个带有“linuxBuild”分支的新存储库:https ://github.com/austonst/cbitcoin/tree/linuxBuild

我想要 MatthewLM/cbitcoin 的本地存储库中的那个分支。

我怎样才能做到这一点?

4

3 回答 3

174

您需要确保git status显示本地存储库中不存在未暂存的更改。
您可以通过首先存储本地更改然后拉取该分支来做到这一点。之后,您可以应用您的存储。


如果要在本地存储库中重新创建 fork 的分支结构,可以执行以下操作:

git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>

这将创建具有与 fork 中相同历史记录的本地分支,fork_branch即将从您在 fork 中的where分支。此外,您的本地分支现在将跟踪 fork 中的该分支,因此您可以轻松地提取在 fork 中提交的新更改。<branch>fork_branchmaster<branch>

我认为您仍然需要事先确保您的工作副本不包含任何更改。

于 2013-01-17T16:10:30.970 回答
64

方法不加遥控器。

git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>
于 2017-09-18T23:01:19.527 回答
0

我能够使用...做类似的事情

git switch -c new_branch
git pull https://github.com/<user>/<forked-repo>.git <branch>
于 2022-01-13T09:56:40.797 回答