想象一下,我已经分叉了一个Github存储库,在做了很多更改之后,发现不可能自动合并我的拉取请求。
但我不想将母存储库克隆到我的本地驱动器,以便reset --hard
或merge -f
。
我的主要问题是遥控器 - 我似乎找不到添加远程引用的方法,如Github API,因此我无法将远程存储库合并到父存储库中我最初分手的。
告诉我,如果我不清楚,我很乐意编辑我的问题。
答案 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
需要一个工作树才能防止合并冲突。但是在你的场景中你真的不需要它。合并上游主分支后,您可以毫无问题地推送分支。