压制Git提交的方法

303 阅读2分钟

我每天都在使用Git,过去我写过一本Git指南Git Cheat Sheet

我认为自己是 Git 的粉丝,但 ...... 我不是 Git 的专家。

提交,取原点,拉原点,推到原点......这就是我每天使用 Git 的情况。

我也做了一些Git的工作。

Git能做的高级事情让我大开眼界。它可能非常复杂,而我倾向于避免所有这些复杂性。我几乎从不在命令行中使用Git,而是使用GitHub Desktop,这是最简单、最漂亮的Git客户端。

不过,我有时也会使用两样东西,那就是偷梁换柱压制提交

让我们来谈谈这个问题。

在我是唯一的开发者的项目中,也就是我所有的个人项目,我确实倾向于在可能的情况下在主站工作。例如,如果我正在做一个简单的修改,或者在博客上添加一个新的帖子。快速和非破坏性的东西。

但在某些情况下,我并不使用这种方法,而是为一个大功能创建一个分支。

这也是在基于团队或开源项目工作时的默认做法。

你创建一个分支,并经常提交。尽早和频繁地提交是一个很大的优势,因为你可以放心地在你的代码上工作,你总是可以返回到工作状态,或者至少返回到你知道的工作状态。

你可能会做一系列的快速提交,其中的信息是 "好的"、"试试这个 "或 "修复愚蠢的错误"。

但在某些时候,你需要收敛到一个稳定的状态,并将修改提交到主干,或任何你想要的分支。

在这之前,你要做一件事:压制你的提交。

GitHub可以在你合并 Pull Request 时自动为你做这件事,这也是我过去在公共开源仓库中经常使用的工作流程。

你不再看到Pull Request中包含的所有单个提交,而是只看到一个提交,在PR合并过程中,你可以写一个详细的、专门的提交信息和描述。

这将消除所有与你要合并的分支的头部有分歧的先前的Git提交,也会消除所有那些也许是你修改过的提交,等等。

这就是GitHub PR过程中的压扁。你也可以在 GitHub 之外压制你的提交。

一旦你在一个分支上的工作完成了,你就把主干分支(或任何其他你想合并的分支)合并到它里面。

这样你就可以处理那里的任何更新冲突。

然后签出主干,并在那里运行。

git merge --squash <your-feature-branch>

然后

这只是你可以使用的工作流程之一,使用 GitHub 来完成所有工作是非常简单的,也是能让你最不头疼的选择。