追加提交文件或更改提交信息
在任何时刻,你都有可能想撤销之前的操作。有些撤销操作是不可逆的。请务必当心。
有一种撤销操作的常见使用场景是提交之后才发现自己忘了添加某些文件,或者写错了提交信息。如果这时你想重新尝试提交,可以使用--amend
选项
$ git commit --amend
上述命令会提交暂存区的内容。如果你在上次提交之后并没有做出任何改动,那么你的提交快照就不会有变化,但你可以改动提交信息。
举例,如果你提交后才发现忘记添加了某个更改过的文件,可以执行下面的操作
$ git commit -m "..."$ git add forgotten_file$ git commit --amend
最终只是产生了一个提交,因为第二个提交命令修正了第一个提交的结果。
撤销已暂存的文件
如果你更改了两个文件a.txt和b.txt,想要分两次提交,但不小心输入了git add *
,把这两个文件都添加到了暂存区。这时,如何将它们从暂存区移出呢?其实git status命令给了你一些提示
$ git statusOn branch masterChanges to be committed: (use "git reset HEAD..." to unstage) modified: a.txt modified: b.txt
它提示你使用git reset HEAD ...命令把文件移出暂存区。
$ git reset HEAD b.txtUnstaged changes after reset:M b.txt
再次查看,可以看到b.txt被移出了暂存区
$ git statusOn branch masterChanges to be committed: (use "git reset HEAD..." to unstage) modified: a.txtChanges not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: b.txt
撤销对文件的修改
如果你突然不想要b.txt的更改了(即想把他还原到上次提交时的状态),怎么办?其实git status
也给出了答案。使用git checkout -- ...命令
$ git checkout -- b.txt
再打开b.txt,则已经被还原到上一次提交时的状态了。