我有一个本地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的分支。
我该怎么做?
答案 0 :(得分:125)
您需要确保git status
表明您的本地存储库中不存在任何未分级的更改
您可以通过首先存储本地更改而不是拉动该分支来完成此操作。之后你可以申请你的藏匿处。
如果要在本地存储库中重新创建fork的分支结构,可以执行以下操作:
git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>
这会在分叉中创建与fork_branch
相同的历史记录的本地分支<branch>
,即fork_branch
将从master
分支<branch>
在叉子里。
此外,您的本地分支现在将在fork中跟踪该分支,因此您可以轻松地引入fork中提交的新更改。
我认为您仍需要事先确定您的工作副本不包含任何更改。
答案 1 :(得分:15)
不添加遥控器的方法。
git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>