如何将我的更改压缩到单个结果提交并选择主分支?

时间:2011-08-27 06:50:40

标签: git

假设我需要执行一些平均长度(几天)的重构。

我从master创建“mybranch”,完成工作,有时我执行从master到mybranch的合并(其他一些团队成员应该继续工作,可能我需要进行更改)。过了一会儿,我准备将我的更改合并回主人。

我是否能够压缩仅我的更改(不包括来自master的合并的更改集,因为它们不是我的)并且挑选我的作品的单个结果提交到主人?可以做场景吗?

2 个答案:

答案 0 :(得分:7)

是的。您可以使用小型测试存储库进行确认。只是做:

git rebase --interactive master mybranch

并为除第一行以外的所有行选择squash。然后,您只需结帐master并定期快进合并mybranch

答案 1 :(得分:5)

在重新定位之后,之前的“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