没有功能分支的推送大师
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
上直观地看到这个
我对这个问题做了很多搜索,但没有找到答案,尽管这似乎是一种常见的情况。对不起,如果它仍然是重复的。
我使用 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
上直观地看到这个