我每天都在使用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 来完成所有工作是非常简单的,也是能让你最不头疼的选择。