Git Branch Off A Branch

sjm*_*tin 4 git github

我正在掌握大师并创建分支'A'.

分支'A'包含HTML/CSS/JS以创建'小部件'.

在审查此代码时,我还想为这个"小部件"创建测试.

我不能在硕士学位上工作,因为分支'A'尚未合并.但是我需要一种方法来处理分支'A'而不对其进行更新,同时正在审查代码以推送到主控.

我想我需要从分支'A'开始分支'B',以便我可以继续处理我已经创建的代码.

问题1.如何在git中执行此操作?

问题2.一旦我将分支'A'合并到主人,即使我还没有完成,它还会包括分支'B'吗?

问题3.我可以独立于分支'A'合并分支'B'吗?

Chr*_*res 6

这很简单 - 您可以在 git 中的任何分支上创建一个分支。

如果您在分支 A 上,只需这样做git checkout -b B,您就会有一个从 A 开始的新分支。它将与 A 分开,并且 A 的更改不会反映在 B 中。

当 A 合并到 master 时,合并不会带来 B 上的提交。

您无法独立管理 B 以掌握 - 分支 B 还包含创建 A 时在 A 上的提交,因此合并 B 也会引入这些提交。可以使用交互式 rebase 或cherry-pick 只从 B(没有 A)引入更改,但这是相当先进的,可能不是您想要做的。

您需要做的另一件事 - 一旦您从 B 分支出来,您可能最终会由于您的代码审查而对 A 进行更改。确保在 A 之上重新设置 B 以保持所有内容最新,否则稍后将测试合并到 master 时会遇到一些麻烦。

  • 哦,同意了。一般来说,当我处于这种情况时,B 是一个完全私有的分支,因此重新定位比生成一堆额外的合并提交更容易和更清晰。 (2认同)

Rob*_*ill 6

问题1.如何在git中执行此操作?

git checkout branch_a
git pull
git checkout -b branch_b
Run Code Online (Sandbox Code Playgroud)

然后,您将有从提交branch_a在新的branch_b.

问题2.一旦我将分支'A'合并到主人,即使我还没有完成,它还会包括分支'B'吗?

不,它们是完全独立的分支,所以只有提交branch_a才会存在于master中.

问题3.我可以独立于分支'A'合并分支'B'吗?

这里有一种双管齐下的方法.如果你想branch_a和你一起提交,那么你可以随时合并branch_b到master中,尽管这种目的无效.

鉴于branch_b测试可能依赖于branch_a它,在A之前合并B似乎很愚蠢.

一旦你将A合并到master中,你可能需要重新绑定branch_b到新的master,并删除你接管的所有原始提交branch_a,因为它们现在都存在于master中:

# Assume A merged into master
git fetch
# Rebase interactively
git rebase -i origin/master
# Exclude (skip or comment out) the commits that were from A, leaving only B
# Rebasing (n/n).....
git push origin branch_b --force
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个全新的branch_b,其中A的提交现在存在,当您将B合并到主服务器时,您将不会有合并冲突.

只有在你已经推branch_b到原点时才需要推力.如果你还没有,没问题.