Git學習筆記(3)——撤銷修改和文件的刪除


本文主要記錄了git中,錯誤的撤銷和文件的刪除。


撤銷修改

    這里有3中情況
  1. 改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
  2. 不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了1,第二步,按照1操作。
  3. 已經提交了不合適的修改到版本庫時,想要撤銷本次提交,可以版本回退,不過前提是沒有推送到遠程庫。
//第一種撤銷:工作區撤銷
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt //工作區的錯誤還沒有add到暫存區
ubuntu@myubuntu:~/joe/learngit$ git status 
位於分支 master
尚未暫存以備提交的變更:
  (使用 "git add <file>..." 更新要提交的內容)
  (使用 "
git checkout -- <file>..."
 丟棄工作區的改動)

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$ 
git checkout --
 readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
//第二種撤銷:暫存區撤銷
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt 
ubuntu@myubuntu:~/joe/learngit$ git add readme.txt //錯誤的文件已經提交到暫存區了
ubuntu@myubuntu:~/joe/learngit$ git status
位於分支 master
要提交的變更:
  (使用 "
git reset HEAD <file>..."
 撤出暫存區)

    修改:     readme.txt

ubuntu@myubuntu:~/joe/learngit$ git reset HEAD readme.txt
重置后撤出暫存區的變更:
M    readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt 
ubuntu@myubuntu:~/joe/learngit$ git status  //撤出暫存區后,還需使用checkout丟棄工作區的改動
位於分支 master
尚未暫存以備提交的變更:
  (使用 "git add <file>..." 更新要提交的內容)
  (使用 "git checkout -- <file>..." 丟棄工作區的改動)

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$ 
git checkout --
 readme.txt
ubuntu@myubuntu:~/joe/learngit$ vi readme.txt
//第三種已經提交,使用版本回退(學習筆記2)

文件的刪除

  1. 使用rm刪除文件,然后git add filename添加到暫存區,git commit 提交。
  2. 直接使用git rm filename ,不用git add直接git commit即可。
//第一種方法git rm file
ubuntu@myubuntu:~/joe/learngit$ ls
abc.c  readme.txt
ubuntu@myubuntu:~/joe/learngit$ 
git rm
 abc.c 
rm 'abc.c'
ubuntu@myubuntu:~/joe/learngit$ git status
位於分支 master
要提交的變更:
  (使用 "git reset HEAD <file>..." 撤出暫存區)

    刪除:     abc.c

ubuntu@myubuntu:~/joe/learngit$ 
git commit -m "del abc"

[master 020f927] del abc
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 abc.c
ubuntu@myubuntu:~/joe/learngit$ git status
位於分支 master
無文件要提交,干凈的工作區
ubuntu@myubuntu:~/joe/learngit$ ls
readme.txt
//第二種方法rm file
ubuntu@myubuntu:~/joe/learngit$ ls
ab.c  readme.txt
ubuntu@myubuntu:~/joe/learngit$ rm ab.c
ubuntu@myubuntu:~/joe/learngit$ ls
readme.txt
ubuntu@myubuntu:~/joe/learngit$ git status
位於分支 master
尚未暫存以備提交的變更:
  (使用 "git add/rm <file>..." 更新要提交的內容)
  (使用 "git checkout -- <file>..." 丟棄工作區的改動)

    刪除:     ab.c

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myubuntu:~/joe/learngit$ git add ab.c 
ubuntu@myubuntu:~/joe/learngit$ git status
位於分支 master
要提交的變更:
  (使用 "git reset HEAD <file>..." 撤出暫存區)

    刪除:     ab.c

ubuntu@myubuntu:~/joe/learngit$ 
git commit -m "del ab.c"

[master 0ad1dfe] del ab.c
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 ab.c
ubuntu@myubuntu:~/joe/learngit$ git status
位於分支 master
無文件要提交,干凈的工作區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM