如何避免在git中进行小的更改?

时间:2010-07-12 23:28:00

标签: git commit

我想知道,我怎么能避免在很小的代码更改中提交。例如,有时我会错过参数之间的空格或那种微小的代码格式。我问这个的原因是因为后来我必须将我的提交推送到远程存储库,我不想包含那些小的更改。

有什么想法吗?感谢

4 个答案:

答案 0 :(得分:21)

更新:正如其他人指出的那样,如果您已经推送到远程来源并与其他开发人员共享此代码,请不要进行任何重新定位或重写任何类型的历史记录。简短的回答:这很危险且有风险!

我建议您查看rebase命令。它完全符合您的要求

  

这样做需要较小的提交并将它们组合成较大的提交

使用它:

git rebase -i HEAD~5

您的编辑器将弹出当前分支头部的最后5次提交,并附带一些文档。在您的情况下,您将需要使用squash。我链接的网站解释得非常好,他们有这个例子:

pick 01d1124 Adding license
squash 6340aaa Moving license into its own file
squash ebfd367 Jekyll has become self-aware.
squash 30e0ccb Changed the tagline in the binary, too.

这将打包前3次提交,并将它们全部置于您标记为pick的提交之下。然后,您可以修改提交消息等等。

玩得开心

答案 1 :(得分:16)

进行更改的唯一方法是使用提交。但是,如果您愿意,可以修改先前的提交以包含新的更改。如果您尚未将先前的提交推送到远程存储库,这可能是最佳解决方案。

有关修改git提交in the Git user's manualin a blog post的良好信息。

答案 2 :(得分:3)

解决此问题的最佳方法之一是在提交之前使用git difftool在每个修改过的文件上运行xdiff或winmerge等可视化工具。这样可以轻松撤消较小的更改,并捕获您忘记所做的重大更改,但尚未准备好。我通过这种方式捕获了大量的错误。例如,当您查看代码时,很难发现丢失或额外的html标记,但在执行差异时很容易发现。

答案 3 :(得分:0)

一种选择是在一个单独的分支上工作,然后当您觉得已经做得足够多时,将该分支的所有提交压缩为一个提交,参见 this question