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

Sam*_*Sam 0 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
Run Code Online (Sandbox Code Playgroud)

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

Rya*_*igg 5

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

如果您这样做的原因是因为您无法通过使用目录名以外的其他内容立即告诉您所在的分支,那么我会鼓励您查找设置您的提示以包含分支名称的内容.我的个人点文件中有这样的东西(bash提示设置在这里__git_ps_1命令在这里.

这让我多次拯救了它的重量.


现在我们已经解决了多个目录问题,你应该阅读这篇名为"一个成功的Git分支模型"的帖子,该文章涵盖了使用几个不同的分支进行开发,尽管在一个存储库中.

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

git remote add main git@github.com:organization/main.git
Run Code Online (Sandbox Code Playgroud)

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

git fetch main
Run Code Online (Sandbox Code Playgroud)

如果您正在使用多个遥控器(这可能表示您的某些程度的精神错乱),您可以使用它来获取它们git fetch --all.

无论如何,一旦你完成了初始提取,你就可以将checkout mainrelease分支检入你的存储库:

git checkout main/release -b release
Run Code Online (Sandbox Code Playgroud)

这告诉git,"嘿,给我主要/发布的分支,并将其称为在此存储库中发布(请)".

现在,假设您是一名优秀的开发人员,您应该能够直接将您的提交合并到您的master分支机构的这个分支中.现在,你将进入基础的release分支,main/release所以你只需要这样做:

git merge master
Run Code Online (Sandbox Code Playgroud)

这里有些人会要求你rebase(这里有一个有趣的讨论.这与merge有相同的语法:git rebase release.

现在你需要真正确保一切正常运作.随你(由你决定.

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

git push main release
Run Code Online (Sandbox Code Playgroud)

现在出去和Git :)