2013-01-17 51 views
51

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

我试图创建一个新的分支,然后从分叉仓库拉,但它抱怨,因为新的分支是主分支以及本地文件变化的一个副本,所以它说

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

我怎样才能做到这一点?

回答

102

你需要确保git status表明,在你的本地库中不存在不分级的变化。
您可以通过首先存储本地更改并拉动该分支来完成此操作。之后,你可以申请你的藏匿处。


如果你想在你的本地库重新创建叉的分支结构,你可以做到以下几点:

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

这将与同历史一样建立本地分支机构 <branch>在叉,即会岔开你master,其中<branch>确实在叉。 此外,您的本地分支现在将跟踪分支中的该分支,以便您可以轻松地引入分叉中提交的新更改。

我觉得你还是需要确保事先你的工作副本中不包含任何的变化。

+0

好的,谢谢。如果我想要我的本地更改以及未在分支中找到的提交,这将非常棒。但是如果我希望新分支完全像在fork存储库上一样呢?这包括在发生这个新分支的fork后,从我自己的存储库中删除任何提交。这样,就好像分支是在我自己的仓库中制作的,而不是分叉的。 –

+0

那么你的答案是我需要做的一个可以接受的解决方案,但是如果我可以将一个新分支拉入一个存储库,我会发现它更直接。我会等一会儿看看别人说什么。 –

+0

@MatthewMitchell:请检查更新。那是你在找什么? –

3

不添加远程方法。

git checkout --orphan fork_branch 
git reset --hard 
git pull <url of fork> <branch> 
相关问题