Git如何将原始仓库的主分支合并到分支仓库的主分支?

时间:2013-11-24 00:26:22

标签: git github merge

我从一个git repo分叉并做了一些开发。原来的回购也有一些进展。我想将它合并到我的仓库。我不想把任何东西推到原始回购。我只是想把他们的变化归还我的,并继续我的回购开发。

2 个答案:

答案 0 :(得分:4)

好的,与此同时,我想我猜错了你的意思。根据你的问题标签你分叉在github上!正确?

好的,这很容易。 github上的fork基本上是你按下fork按钮的存储库的一个副本。

要重新连接到原始存储库,请在本地计算机上执行以下步骤:

作为示例并尝试我为此分叉了libgit2 ......

$ git clone https://github.com/MyOwnAccount/libgit2.git
Cloning into 'libgit2'...
remote: Counting objects: 43058, done.
remote: Compressing objects: 100% (16412/16412), done.
remote: Total 43058 (delta 30556), reused 37875 (delta 25761)
Receiving objects: 100% (43058/43058), 12.22 MiB | 942 KiB/s, done.
Resolving deltas: 100% (30556/30556), done.
Checking out files: 100% (2432/2432), done.

$ git remote -v
origin  https://github.com/MyOwnAccount/libgit2.git (fetch)
origin  https://github.com/MyOwnAccount/libgit2.git (push)

$ git remote add forkOrigin https://github.com/libgit2/libgit2.git

$ git remote -v
forkOrigin https://github.com/libgit2/libgit2.git (fetch)
forkOrigin https://github.com/libgit2/libgit2.git (push)
origin  https://github.com/MyOwnAccount/libgit2.git (fetch)
origin  https://github.com/MyOwnAccount/libgit2.git (push)

$ git fetch forkOrigin 

$ git fetch --tags forkOrigin 

现在您拥有分叉的仓库中的所有最新提交,分支和标签。 (您可以直接在远程分支上使用rebase或合并 - 在此时按照您的喜好/需要进行操作,fetch只是现在最简单的显示方式)

使用这些获取的数据,您可以像往常一样合并,变换,挑选等等。

如果您稍后将更改推送到您自己的存储库,那么您就完成了。

答案 1 :(得分:0)

如果您使用GitHub作为帖子的github建议,那么您可能将原始仓库分叉到您的GitHub帐户,然后从您的分支克隆。您可以从原始仓库而不是叉子克隆,但我会假设第一种情况。

当你从fork中克隆时,git会自动为它创建一个名为origin的遥控器。要从原始仓库获取更改,首先您必须为其添加一个遥控器,我们称之为other

git remote add other the_github_url

接下来,获取此回购的分支:

git fetch other

您可以稍后使用相同的命令来获取在该存储库中提交的新更改。

您可以使用以下方式查看其他遥控器中的分支:

git branch -r

您可以将其他遥控器的主控合并到当前分支中:

git merge other/master

也就是说,您使用遥控器的名称后跟斜杠,然后使用分支的名称。