1

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

我使用 Git 来管理我的 Java 源文件。我是唯一的开发者。我在 LAN 共享上创建了一个“远程”存储库。我定期将我的主分支“推送”到这个远程存储库,因为 LAN 共享可以安全地防止数据丢失(它已备份)。我在 Windows 上使用 TortoiseGit,我不使用 Git 命令行。

通常,我会同时开发 2-3 个新功能。我为每个特性(又名特性分支)创建了一个新的 Git 分支。当我完成一个功能时,我通过创建一个“合并提交”将它合并到 master。这工作正常。

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

我使用 TortoiseGit 1.8.15.0。当我“推送”我的更改时,弹出窗口的“参考”部分显示 Local=master,Remote=master。此外,未选中“推送所有分支”(默认)。在窗口的底部,一切都是默认的,这意味着只有“自动加载 Putty Key”被选中。

我做错了什么,我怎么能在我的遥控器上实现一个“干净”的主分支?

附加信息:我的分支结构看起来像git-merge 手册页上的那个

          A---B---C feature1
         /         \
        D---E---F---G---H master
4

2 回答 2

1

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

git merge --squash feature-branch

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

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

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

您可以在此页面上直观地看到这一点

于 2016-01-11T14:04:50.593 回答
0

通常,我会同时处理 2-3 个新功能。我为每个特性(又名特性分支)创建了一个新的 Git 分支。当我完成一个功能时,我通过创建一个“合并提交”将它合并到 master。这工作正常。

大概您只看到来自已合并到 master 的功能分支的提交。这就是在 git 中合并分支的关键——本质上,您将功能分支中的提交引入到主分支中,也就是“合并”。

我认为您正在寻求实现一些在功能分支中清理提交的概念?为什么 ?如果您正在单独开发,则没有真正需要整理提交。有一些选项可以执行 squash 合并和/或 rebase 你的特性分支来整理它,但我建议你先熟悉 git 的基础知识。

于 2016-01-11T12:31:00.213 回答