Git从另一个存储库中拉出一个分支?


86

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

我尝试创建一个新分支,然后从派生的存储库中拉出,但是它抱怨,因为新分支是master分支的副本以及本地文件更改,因此它说

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分支。

我怎样才能做到这一点?

Answers:


156

您需要确保git status显示本地存储库中没有未进行的暂存更改。
为此,您可以先存储本地更改,然后再拉该分支。之后,您可以应用存储。


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

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存储库中的分支完全一样怎么办?这包括在此新分支发生分支之后,从我自己的存储库中删除所有提交。这样一来,就好像分支是在我自己的存储库中创建的,而不是分叉的那样。
马修·米切尔

好吧,您的答案是我需要做的可接受的解决方案,但是如果我可以将新分支拉到存储库中,我会发现它更直接。我会等一会儿,看看别人怎么说。
马修·米切尔

@MatthewMitchell:请检查更新。那是您要找的东西吗?
Daniel Hilgarth 2013年

好吧,我确实使用了将其与另一个分支合并的方法(我刚刚将其与主分支合并),但是在我只想要一个分支与其他存储库完全相同的情况下,我将尝试获取和您描述的结帐方法。谢谢。
马修·米切尔

用于从另一个仓库迁移另一个分支“ gh-pages”!
Marcello de Sales

37

不添加遥控器的方法。

git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>

2
谢谢您的支持,我已将其添加为书签并继续使用它!
Shane Smiskol

2
2020
钻石
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.