我想知道如何避免在代码微小更改时提交代码。例如,有时我会错过参数之间的空格或类似的代码格式问题。我问这个问题是因为以后我必须将提交推送到远程存储库,而我不想包括这些小的更改。
有什么想法吗?谢谢
有什么想法吗?谢谢
更新:正如其他人指出的那样,如果您已经将代码推送到远程分支并与其他开发人员共享了这些代码,请不要执行任何rebase或者历史重写等操作。简短的答案是:这很危险,也很冒险!
我建议您查看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.
这将打包前面的三个提交,并将它们全部放在你标记为pick
的提交下面。然后,您可以修改提交消息等内容。
玩得开心!
push
到远程origin
,那么commit --amend
非常好用。如果您已经推送了更改,则在执行amend
之后,您必须使用push --force
,这非常危险。 - Danijel解决这个问题的最佳方法之一是在提交前使用Git工具git difftool在每个修改过的文件上运行一个可视化工具,如xdiff或winmerge。这样可以轻松撤销小的更改,并捕获您忘记并未准备好的重大更改。我经常通过这种方式发现很多bug。例如,在查看代码时,缺少或多余的HTML标记可能很难发现,但是通过比较就容易发现。
git diff
呢?这是它的主要用途之一... - Cascabel
.git/hooks/pre-commit.sample
)查找诸如行末空格之类的内容。例如,您可以在脚本中包装 GNU indent,以强制执行特定的编码风格,并将其放入 pre-commit hook 中。 - David Brigada