使用Git在本地推送并保留详细信息

时间:2016-02-04 10:39:55

标签: git

我有这个本地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分支的重定版版本进入我的主人。不幸的是,这不起作用,因为我想为我保留中间提交。

我怎样才能做到这一点?这是一个糟糕的工作流程吗?

2 个答案:

答案 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