我已经对这个问题进行了大量的搜索,但没有找到答案,尽管这似乎是一种常见的情况。对不起,如果它仍然是重复。
我使用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
答案 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的基础知识。