假设我需要执行一些平均长度(几天)的重构。
我从大师创建“mybranch”,完成工作,有时我执行从master到mybranch的合并(其他一些团队成员应该继续工作,可能我需要进行更改)。过了一会儿,我准备将我的更改合并回主人。
我能挤压吗? 只有我的改变 (不包括来自master的合并的变更集,因为它们不是我的)并且樱桃选择我的作品的一个结果提交到主人?可以做场景吗?
假设我需要执行一些平均长度(几天)的重构。
我从大师创建“mybranch”,完成工作,有时我执行从master到mybranch的合并(其他一些团队成员应该继续工作,可能我需要进行更改)。过了一会儿,我准备将我的更改合并回主人。
我能挤压吗? 只有我的改变 (不包括来自master的合并的变更集,因为它们不是我的)并且樱桃选择我的作品的一个结果提交到主人?可以做场景吗?
是的。您可以使用小型测试存储库进行确认。做就是了:
git rebase --interactive master mybranch
并选择 squash
对于除第一行之外的所有行。然后你结帐 master
并定期进行快速合并 mybranch
。
是的。您可以使用小型测试存储库进行确认。做就是了:
git rebase --interactive master mybranch
并选择 squash
对于除第一行之外的所有行。然后你结帐 master
并定期进行快速合并 mybranch
。
在重新定位之后,在之前的“mybranch”中将没有关于那些提交的参考
我会做什么,可能更安全
git checkout mybranch
创建一个分支(它实际上是一个用于变基的临时分支)
git checkout -b movingToMaster
试着改变 movingTomaster
至 master
git rebase -i master
将提示编辑器询问您应该选择哪个提交,或者压缩或编辑...
编辑这些文件,在你的情况下,第一行应保持不变,另一行应改为“选择”为“壁球”,如果你愿意,可以修改你的提交信息。 在对该文件进行足够的更改后保存它。
即
pick 0a81405 Bug Fix 1
pick 91be655 Bug Fix 2
pick 1200fc7 Bug Fix 3
pick 1211fb7 Bug Fix 4
pick ba77fdf Bug Fix 5
改成
pick 0a81405 Bug Fix 1
squash 91be655 Bug Fix 2
squash 1200fc7 Bug Fix 3
squash 1211fb7 Bug Fix 4
squash ba77fdf Bug Fix 5
保存。然后
git checkout master
移动你的 master
分支到 movingTomaster
通过使用快进合并分支
git merge movingTomaster
注意:它不会有害,因为它只是一个快进合并,不会使你的历史混乱。
如果您愿意,请删除您的movingTomaster分支
git branch -D movingTomaster