Git 基础:如何添加修改到你的上一个 commit 中?
这是一篇协同翻译的文章,你可以点击『我来翻译』按钮来参与翻译。
Git 基础: 为你的上次提交添加更多更改
通过这篇文章你将会学习如何修改你的上次提交,添加(或者移除)一些更改。你也可以按照这个教程学习如何编辑您的上次提交信息。
我假设你是独自在一个分支上工作,以避免扰乱你团队成员的工作。记住:共享分支通常很难维护。
因此你有如下提交历史记录(较早的提交位于顶部):
f7f3f6d 创建 file_a 类和方法
310154e 改进 SomeOtherClass 代码
a5f4a0d 更改 变更日志文件
但是你忘记在提交记录为 a5f4a0d 中提到的变更日志文件中只加了一行。 :(
你可以简单地提交它并拥有如下历史记录:
f7f3f6d create file_a class and methods
310154e improve SomeOtherClass code
a5f4a0d update changelog file
a4gx124 add missing line to changelog
但这对你的历史记录没有好处(这只是你已经做过的改变的改变)。这里最好的情况是在一个单个提交中同时进行这两项更改。
你可以使用简单而神奇的 amend 命令来实现这一点!
请记住:在执行这些步骤之前,不要提交你想要添加到上次提交的任何更改!
修改命令的基础
只需添加修改后的文件:
$ (some_branch) git add changelog.md
并对其进行修改:
$ (some_branch) git commit --amend
执行命令后,此文件将显示(可能在 vi/vim 上。如果你不知道如何使用,请查看 this cheatsheet)
更新 ChangeLog 文件
# Please enter the commit message for your changes. Lines starting
# with ‘#’ will be ignored, and an empty message aborts the commit.
#
# Author: John Doe <john@doe.com>
# Date: Thu Apr 21 22:40:30 2016 -0300
#
# On branch some_branch
# Your branch is up-to-date with ‘origin/some_branch’.
#
# Changes to be committed:
# modified: changelog.md
在这里你可以编辑你的提交信息。随心所欲,然后保存文件。如果你不想更改消息,只需保存文件而不更改它。
现在你在最后一次提交和之后所做的更改将在同一个提交中!
修改提交而不更改其消息
如果您不想更改提交消息,可以运行带有 no-edit 标志的修正命令,如下所示:
$ (some_branch) git commit --amend --no-edit
你不会被“重定向”文件来编辑提交消息,就是这样!
推送修改后的提交
如果你还没有将最后一次提交推送到您的遥控器,那么一次推送就足够了。否则,你必须使用 -f 选项来推送,因为你已经重写了你的提交历史:
$ (some_branch) git push -f origin some_branch
请注意:使用 -f 推送是一件非常危险的事情。谨慎行事,并始终确保您正在推动正确的分支。
记住:永远不要重写公共分支的提交历史(如 master)。这真的会弄乱你的队友的工作。
奖励 1:只需编辑提交消息
要仅编辑提交消息(不对上次提交添加新更改),只需运行 amend 命令而不添加更改。就那么简单!
奖励 2:在不打开文件的情况下编辑提交
当然会有一个命令!只需运行:
$ (some_branch) git commit --amend -m "Your new commit message"
And there you go!
如果你想学习如何在团队中使用 Git,你应该检查一下 this other post ;)
快乐Git!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
为啥我这个翻译完之后,没显示我呢
好像真的是这样@Tacks 你的翻译记录都还在。。

但是译者名单里却没有你了。。。
