推送没有功能分支的master

时间:2016-01-11 12:19:34

标签: git git-branch git-merge git-squash

我已经对这个问题进行了大量的搜索,但没有找到答案,尽管这似乎是一种常见的情况。对不起,如果它仍然是重复。

我使用Git来管理我的Java源文件。我是唯一的开发人员。我创造了一个遥控器' LAN共享上的存储库。我经常推动'我的主分支到这个远程存储库,因为LAN共享可以安全地防止数据丢失(它被备份)。我在Windows上使用TortoiseGit,我不使用Git命令行。

通常,我会同时处理2-3个新功能。我为每个功能(也就是功能分支)创建了一个新的Git分支。当我完成一项功能时,我会通过创建一个'合并提交将其合并为主人。这很好。

合并之后我推动'我的主分支到远程存储库,以便我的更改是安全的。我的问题是,这并不完全符合我的要求。我的合并提交'被推到遥控器没有问题。但是,我的功能分支中的所有提交也被推送。我不想要这个。在我的远程存储库中,我只想看到一个“干净”的存储库。主分公司。我的功能分支包含各种中间提交。显然,这些在我的远程存储库中并不需要和混淆。

我使用TortoiseGit 1.8.15.0。当我推动'我的变化,' Ref'弹出窗口的一部分显示Local = master,Remote = master。此外,'推动所有分支机构'未选中(默认)。在窗口的底部,一切都是默认的,这意味着只有' Autoload Putty Key'检查。

我做错了什么,我怎样才能实现清洁'我的遥控器上的主分支?

其他信息:我的分支结构与git-merge man page

上的分支结构类似
          A---B---C feature1
         /         \
        D---E---F---G---H master

2 个答案:

答案 0 :(得分:1)

大多数人希望了解每个功能是如何开发的,因此希望保留所有这些功能。如果您不这样做,请考虑使用--squash选项:

git merge --squash feature-branch

将把功能分支的所有开发都放在一个提交中,如下所示:

D---E---F---G*---H master

G*是一个提交,包含提交A,B,C中引入的所有更改。

您可以在this page

上直观地看到这一点

答案 1 :(得分:0)

  

通常,我会同时处理2-3个新功能。我为每个功能(也就是功能分支)创建了一个新的Git分支。当我完成一项功能时,我会通过创建一个'合并提交将其合并为主人。这很好。

据推测,您只能看到已合并到master中的功能分支的提交。这是在git中合并分支的关键点 - 你实际上是将你的功能分支提交到主分支,也就是" merge"。

我认为您希望在功能分支中实现清理提交的一些概念?为什么?如果你正在开发独奏,没有必要让提交整洁。可以选择执行壁球合并和/或重新设置你的功能分支来整理它,但我建议你先熟悉git的基础知识。