如何合并和推送远程分支的更改

时间:2012-01-20 17:15:33

标签: git

git clone git@github.com:foo/bar.git bar-master

git branch release
git push origin release

git clone -b release git@github.com:foo/bar.git bar-release

cd bar-master
touch foo.txt
git commit -m "foo.txt"

cd bar-release

如何将更改从master合并到bar-release并将更改推回到远程origin / release分支。合并更改并将更改推送回远程分支的正确方法是什么。

2 个答案:

答案 0 :(得分:5)

我真的很鼓励你习惯在一个目录里面工作。 Git是专门为此而设计的。

如果您这样做的原因是因为您无法通过使用其他而不是目录名称来立即告诉您所在的分支,那么我会鼓励您查看设置的内容您提示包含分支名称。我的个人点文件(bash prompt setting here__git_ps_1 command here

中有类似的内容

这为我节省了很多次它值得用金重量。


现在我们已经解决了多个目录问题,你应该阅读这篇名为"A successful Git branching model"的帖子,该帖子涵盖了使用几个不同的分支进行开发,尽管是在一个存储库中。

一旦你完成了,现在你已准备好将同样的东西应用到其他存储库。首先,您需要将远程存储库添加到git跟踪的远程存储列表中。这只是有用的,因为您可以通过 name 而不是地址来引用,其名称通常比地址短得多。

git remote add main git@github.com:organization/main.git

我将在这里假设遥控器上有这个release分支。您要在这里做的第一件事是更新有关此存储库的信息,您可以使用此命令执行此操作:

git fetch main

如果你正在使用多个遥控器(这表明你有一定程度的精神错乱),你可以使用git fetch --all获取它们。

无论如何,一旦你完成了初始提取,你就可以将main的{​​{1}}分支签出到你的存储库中:

release

这告诉git,“嘿,请给我主要/发布的分支,并在此存储库中调用它(请)”。

现在,假设您是一名优秀的开发人员,您应该能够直接将您的提交合并到git checkout main/release -b release 分支的此分支中。现在,您将位于基于master的{​​{1}}分支中,因此您只需要执行此操作:

release

此处的某些人会要求您main/release代替There's an interesting discussion about this here。这与合并语法相同:git merge master

现在你需要真的确保一切正常运作。这取决于你。

一旦您对此非常有信心,您可以通过运行此命令将rebase分支推送到git rebase release存储库:

release

现在出去和Git:)

答案 1 :(得分:1)

您应该使用具有2个不同遥控器的相同存储库。你可以继续这样做,但现在你必须管理2个本地的以及遥控器之间的推拉。

对于你的问题,你可以在两个本地的之间推送和取出来安排你需要的东西,然后从任何一个推送到github遥控器。