没有功能分支的推送大师

Push master without feature branches

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

我使用 Git 来管理我的 Java 源文件。我是唯一的开发者。我在 LAN 共享上创建了一个 'remote' 存储库。我经常 'push' 我的 master 分支到这个远程存储库,因为 LAN 共享是安全的,不会丢失数据(已备份)。我在 Windows 上使用 TortoiseGit,我不使用 Git 命令行。

通常,我同时处理 2-3 个新功能。我为每个功能创建了一个新的 Git 分支(也称为功能分支)。当我完成一个特性时,我通过创建一个 'merge commit' 将它合并到 master 中。这很好用。

合并后,我 'push' 我的 master 分支到远程存储库,这样我的更改是安全的。我的问题是这并不完全符合我的要求。我的 'merge commit' 被毫无问题地推送到远程。但是,我的功能分支中的所有提交也会被推送。我不想要这个。在我的远程存储库中,我只想看到一个 'clean' master 分支。我的功能分支包含各种中间提交。显然这些在我的远程存储库中是不需要的并且令人困惑。

我使用 TortoiseGit 1.8.15.0。当我 'push' 我的更改时,弹出 window 的 'Ref' 部分显示 Local=master,Remote=master。此外,'Push all branches' 未选中(默认)。在 window 的底部,一切都是默认的,这意味着只有 'Autoload Putty Key' 被选中。

我做错了什么,我怎样才能在我的遥控器上实现 'clean' master 分支?

附加信息:我的分支结构看起来像 git-merge man page

上的那个
          A---B---C feature1
         /         \
        D---E---F---G---H master

Usually, I work on 2-3 new features in parallel. I create a new Git branch for each feature (aka feature branches). When I'm done with a feature, I merge it to master by creating a 'merge commit'. This works fine.

大概您只会看到来自您已合并到 master 的功能分支的提交。这是在 git 中合并分支的关键所在——您实际上是将功能分支中的提交引入主分支,也就是 "merge".

我认为您希望实现清理功能分支中的提交的想法?为什么 ?如果您是单独开发,则没有真正需要使提交整洁。有执行挤压合并的选项 and/or 重新设置您的功能分支以整理它,但我建议您首先熟悉 git 的基础知识。

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

git merge --squash feature-branch

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

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

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

你可以在 this page

上直观地看到这个