在git中合并两个远程分支

4

编辑

让我来解释一下,我想合并两个同名但不同远程地址的git仓库。

也就是说,在git中我有一个叫做repo_name的仓库,其中有一个分支名为repo_name_a,并在另一个分支上添加了一个分支,名为repo_name_b。

现在,我该如何将它们合并呢?


我对你的术语感到困惑。一个仓库可能有多个分支和派生物。两个仓库通常是两个完全独立的项目,在Github上具有完全不同的主页和完全不同的历史记录,通常不能合并。 - akgill
@akgill 很抱歉让你感到困惑。在我提出问题后,我明白了一些事情。但是,现在我卡在了最后一步。问题是,我只有一个仓库,这个仓库现在有两个分支:主分支和测试分支。在对测试分支进行了很多更改之后,我想将其与主分支合并。这就是我卡住的地方。顺便说一下,非常感谢你的好答案。 - spartak
没问题。我的回答的后半部分会告诉你两种将测试合并到主分支的方法。 - akgill
当我执行 git checkout test_repogit merge master 时,我本来以为它们会合并,但实际上却提示 already upto date,尽管它们明显处于不同的状态。 - spartak
是的,那是因为test_repo已经包含了master包含的所有内容(因为它是从master分支出来的)。您会注意到在下面,我建议先检出master并将test_repo合并进去。相反的顺序。 :) - akgill
1个回答

23
下面给出的答案是针对提问者之前版本的问题,现在似乎是完全不同的问题。这可能与当前问题无关。
你所描述的基本上就是git的预期使用方式,先在分支中增加功能或进行工作,然后在完成/审核后合并回主分支。
正确的命令是 git clone https://github.com/master_repo/master_repo ,可将该repo复制到您的本地计算机。然后再创建一个新的分支, git checkout -b test_repo 也是正确的。
但是,在您的新分支中工作时,您会多次运行 git add <文件名称> git commit ,然后想要更新远程存储库的测试分支的历史记录时,使用 git push origin test_repo
这意味着将我的内容推送到test_repo分支的原点。
如果您独自一人在存储库中工作,则可以在本地机器上将更改合并到主分支,最简单的方法是: git checkout master git merge test_repo 您可能不会遇到合并冲突,但如果遇到,您需要解决它们。然后,从本地主分支开始,您可以使用 git push origin master 来更新远程分支。
如果您正在与协作者合作的项目上工作,则可能希望使用github网站界面从test_repo分支创建一个“拉取请求”到主分支。您的协作者随后可以审查您的更改并提出改进建议,并最终负责将您的分支合并到主分支中。

如果你正在个人项目中工作,你也可以这样做。创建一个拉取请求,其中包含要求被合并到主分支中的更改的高级描述,然后你可以在 web 界面上将拉取请求合并到主分支。这是一种更加安全、更好的方法,因为这最终是使用 Git 协作工作的方式,而且它留下了一个良好的描述性历史记录,说明所有合并到主分支的操作都完成了什么。

如果你选择这样做,在分支合并后,你可以远程删除它并在本地运行 git remote prune origin 来删除你的本地分支(以及所有已从远程删除的本地分支)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接