当前位置:   article > 正文

git撤销操作

git changes to be committed: 丢弃

可以撤销是Git一项非常重要的功能,但需要注意的是,有些撤销操作是不可逆的,因此请务必谨慎小心。

修改最后一次提交

有时候我们提交后才发现有文件漏掉没有提交,或是想要提交信息,此时可以用--amend重新提交。

git commit --amend

此选项会覆盖上次提交,如果当前暂存区的快照和上次没有任何改动就相当于重新编辑提交信息。

如果上次提交时忘了暂存修改的文件,也可以先暂存再覆盖上次的提交。

  1. git commit -m "initial commit"
  2. git add forgotten_file
  3. git commit --amend

上面三条命令只会产生一个提交,第二个提交会有机会重新编辑提交信息。

取消已经暂存的文件

有时候我们执行git add .命令后突然想把本次的修改分多次提交,可是已经添加到暂存区了,怎么撤销暂存其中的一个文件呢?
其实在我们用git status命令查看的时候就已经告诉我们该怎么办了。

  1. $ git add .
  2. $ git status
  3. On branch master
  4. Changes to be committed:
  5. (use "git reset HEAD <file>..." to unstage)
  6. modified: README.txt
  7. modified: benchmarks.rb

很清楚的提示use git reset HEAD <file> ... to unstage可以取消文件的暂存。我们可以试试取消benchmarks.rb的暂存。

  1. $ git reset HEAD benchmarks.rb
  2. Unstaged changes after reset:
  3. M benchmarks.rb
  4. $ git status
  5. On branch master
  6. Changes to be committed:
  7. (use "git reset HEAD <file>..." to unstage)
  8. modified: README.txt
  9. Changes not staged for commit:
  10. (use "git add <file>..." to update what will be committed)
  11. (use "git checkout -- <file>..." to discard changes in working directory)
  12. modified: benchmarks.rb

取消对文件的修改

有时我们改动了一些文件后发现完全没有必要,此时怎么恢复文件呢?git status同样提示了

  1. Changes not staged for commit:
  2. (use "git add <file>..." to update what will be committed)
  3. (use "git checkout -- <file>..." to discard changes in working directory)
  4. modified: benchmarks.rb

第三行告诉我们可以用git checkout -- <file>丢弃工作目录中的修改,回到之前暂存的状态。

  1. $ git checkout -- benchmarks.rb
  2. $ git status
  3. On branch master
  4. Changes to be committed:
  5. (use "git reset HEAD <file>..." to unstage)
  6. modified: README.txt

可以看到,文件已经回到修改前的版本,但是需要注意的是,因为你没有提交过修改后的文件,对git来说就像它们从未存在过一样,因此这条命令没有办法撤销,你已经完全丢失了你的修改。

转载于:https://www.cnblogs.com/lepeCoder/p/git-abolish.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/644942
推荐阅读
相关标签
  

闽ICP备14008679号