我正在使用master并创建分支'A‘。
分支'A‘包含用于创建'widget’的HTML/CSS/JS。
当这段代码被审查时,我也想为这个“小部件”创建测试。
我还不能离开主目录,因为分支'A‘还没有合并。但我需要一种方法来停止分支'A‘的工作,而不做更新,同时代码正在审查,以推送到主。
我认为我需要在分支'A‘的基础上创建分支'B’,这样我就可以继续使用我已经创建的代码。
问题1.我如何在git中做到这一点?
问题2.一旦我将分支'A‘合并到主分支,即使我还没有完成,也会包括分支'B’吗?
问题3.我可以独立于分支'A‘合并分支'B’吗?
发布于 2015-12-16 07:51:42
问题1.我如何在git中做到这一点?
git checkout branch_a
git pull
git checkout -b branch_b然后,您将在新的branch_b中获得来自branch_a的提交。
问题2.一旦我将分支'A‘合并到master,即使我还没有完成,也会包括分支'B’吗?
不,它们是完全独立的分支,所以只有来自branch_a的提交才会存在于master中。
问题3.我可以合并独立于分支'A‘的分支'B’吗?
这是一种双管齐下的方法。如果你想随身携带branch_a提交,那么你可以在任何时候将branch_b合并到master中,尽管这样做的目的是无效的。
考虑到branch_b的测试可能依赖于branch_a,将B合并在A之前似乎是愚蠢的。
一旦您将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这将为您提供来自master的新branch_b,其中来自A的提交现在存在,并且当您将B合并到master中时,您将不会有合并冲突。
仅当您已经推送branch_b回源时,才需要强制推送。如果你没有,没问题。
发布于 2015-12-16 07:48:19
这很简单--你可以在git中的任何分支上创建一个分支。
如果您在分支A上,只需执行git checkout -b B,您就会有一个从A开始的新分支。它将与A分开,对A的更改不会反映在B中。
当A合并到master时,合并不会在B上引入提交。
您不能将B管理为独立的master -分支B还包含创建时在A上的提交,因此合并B也会引入这些提交。使用交互式的rebase或cherry-pick可以只从B引入更改(没有A),但这是相当高级的,可能不是您想要的。
你想做的另一件事是--一旦你离开了B,你可能最终会因为你的代码审查而改变A。确保将B置于A之上,以保持所有内容都是最新的,否则,当您稍后将测试合并到master中时,您会遇到一些麻烦。
https://stackoverflow.com/questions/34301568
复制相似问题