Git从另一个存储库中提取分支?

Mat*_*ell 69 git github git-branch

我有一个本地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的分支.

我怎样才能做到这一点?

Dan*_*rth 135

您需要确保git status显示本地存储库中不存在未分级的更改.
您可以通过首先存储本地更改而不是拉动该分支来完成此操作.之后你可以申请你的藏匿处.


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

git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>
Run Code Online (Sandbox Code Playgroud)

这将创建fork_branch具有相同历史记录的本地分支,就像<branch>在fork中一样,fork_branch即将分支到fork 中的masterwhere <branch>.此外,您的本地分支现在将在fork中跟踪该分支,因此您可以轻松地引入fork中提交的新更改.

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


Ale*_*191 18

方法无需添加远程.

git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你,我已将其添加为书签并不断回来查看! (2认同)
  • 2020 年最佳答案 (2认同)

小智 6

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

git switch -c new_branch
git pull https://github.com/<user>/<forked-repo>.git <branch>
Run Code Online (Sandbox Code Playgroud)