我有这个本地Git存储库,我在其中开发了一个新功能。这项工作没有经过全面测试,因为我是这个特殊功能的唯一开发人员,所以我让这个分支非常混乱。
这是我在当地基本拥有的内容:
v feature
b1--b2--b3--b4
/ \
a1--a2--a3--a4--a5
^ ^ master
origin/master
当我想推送a5
时,所有b
次提交都会被推送,因为a5
有两个父级。但是,我不想与社区分享我凌乱工作的所有细节。在遥控器上,我想得到这个
a1--a2--a3--a4--a5
^ ^ master
origin/master
a5
是我工作的结果。
如果我不想保留所有细节,我可以简单cherry-pick
作为我的feature
分支的重定版版本进入我的主人。不幸的是,这不起作用,因为我想为我保留中间提交。
我怎样才能做到这一点?这是一个糟糕的工作流程吗?
答案 0 :(得分:1)
如果您使用git merge --squash
将功能合并到主服务器中,则下一个git commit
将创建a5
并将所有更改合并到其中,但不会将指针返回b4
。所以你的回购将是这样的:
v feature
b1--b2--b3--b4
/
a1--a2--a3--a4--a5
^ master
然后你可以在没有任何b提交被推送的情况下推送master。
答案 1 :(得分:0)
您可以先将master
合并到git rebase -i HEAD~5
,然后git push -f origin
将所有提交压缩为一个,然后强制推送valueUpdate: 'afterkeydown'
。
详细了解如何压扁here