使用Github存储库(合并,重置)而不进行克隆

时间:2013-04-17 03:25:32

标签: git github

想象一下,我已经分叉了一个Github存储库,在做了很多更改之后,发现不可能自动合并我的拉取请求。

但我不想将母存储库克隆到我的本地驱动器,以便reset --hardmerge -f

我的主要问题是遥控器 - 我似乎找不到添加远程引用的方法,如Github API,因此我无法将远程存储库合并到父存储库中我最初分手的。

告诉我,如果我不清楚,我很乐意编辑我的问题。

1 个答案:

答案 0 :(得分:3)

我不完全确定你在这里问的是什么。首先,您不合并存储库,合并分支。存储库只保存分支和与它们相关的提交。其次,为了将远程添加到本地存储库,您不需要与GitHub API进行交互。我建议不要在您的远程存储库中添加远程数据库,因为它不会自动保持最新状态。

我通常做的是将新的upstream遥控器添加到我的本地存储库:

git remote add upstream <url-to-parent>

获取更新的参考文献:

git fetch upstream

现在您可以访问父存储库中的最新数据。好的部分是存储库中的大多数对象都将被重用,因此您不会拥有完全独立的副本。现在,您可以通过upstream遥控器访问父回购中的内容。例如,您可以在父存储库中合并最新版本的master:

git merge upstream/master

您还可以在更新后的主人身上重新定义当前的更改集(小心这个!):

git rebase upstream/master

当它是私人分支时,我倾向于选择后者。如果有人在我的分支上建立,有时前者是必要的。如果你没有处理rebase,你可能不希望这是你第一次使用它。你想要在压力较小,控制力较强的环境中进行实验。

无论你决定做什么,都要学会处理合并冲突。大多数都很容易理清,从长远来看,它将使Git(或任何其他VCS)的生活变得更好。

<强>更新

在评论中进行了一些讨论之后,现在很清楚你想要将你的工作合并到上游。是的,这完全有可能。事实上,如果您已将upstream/master合并到主分支中,那么您真正需要做的就是:

git push upstream master

这会将您的主分支推送到主分支项目的远程存储库。它应该是一个快速前进的,没有理由使用--force。如果您确实看到一些关于无法快进或使用--force的建议,请小心。很有可能丢失数据。

在这种模式下,我更倾向于使用git rebase upstream/master后跟git push upstream master来避免在日志消息中看到"Merging upstream/master into master"之类的内容。正如我之前提到的,git rebase确实也有它自己的关注点。

在此模式下,master是您和上游之间发生所有合并和解决的地方。您不能直接合并到远程ref,因为没有与之关联的分支(本地)。 git merge需要一个工作树才能防止合并冲突。但是在你的场景中你真的不需要它。合并上游主分支后,您可以毫无问题地推送分支。