Git撤銷修改情境及對應指令詳解

來源:互聯網
上載者:User

本文原則:開門見山、簡明扼要,希望能給大家學習工作提供協助。

情境一:撤銷工作區的修改(未執行git add)

指令:git checkout 【目錄或檔案名稱】

執行個體:

1、修改了test.txt文檔,git status 會出現如下提示:

2、git checkout test.txt,無提示

3、git status,顯示乾淨的工作區

情境二:撤銷暫存區的修改(已執行git add,但未執行git commit)

指令:git reset 【HEAD或某一版本號碼】【可選:檔案名稱】(HEAD指向最近的一個版本,一個commit就是一個版本,版本號碼可以通過git log指令查詢)

注意:git reset有三個參數,--soft、--mixed、--hard,如果不指定,會預設指行--mixed參數,它的意思是將指定版本之後的修改(在本情境中,就是最近一次提交後的修改),都撤回到工作區中,也就是未執行git add的狀態。如果加上--hard參數,就會放棄指定版本之後的所有修改,會出現乾淨的工作區與暫存區(此參數會在下個情境展示執行個體)。如果加上--soft參數,則會把指定版本之後的修改撤回到暫存區,工作區內容不變。

執行個體:

1、修改test.txt文檔,並提交修改到暫存區

2、git reset HEAD

3、git status,顯示修改撤回到了工作區

情境三:撤銷已經執行git commit的修改(真正意義上的版本回退)

指令:git reset或git revert

git reset與git revert的區別:

git reset會修改git log的版本曆史,如果你回退到了幾個版本前,那git log時就會發現你丟失了被回退的版本。而git revert不會修改版本曆史,你回退哪個版本,git revert就會建立一個提交,把你要回退版本的修改抵消掉。如果沒看懂,請看執行個體:

執行個體一:git reset

1、git log --pretty=online 顯示有三個版本

2、git reset --hard 版本號碼(輸前幾位即可),回退版本到Second commit

3、git log --pretty=online,丟失版本Third commit

執行個體二:git revert

1、git log --pretty=online 顯示有三個版本

2、git revert 版本號碼,抵消某個版本與其之後版本的修改,注意,這裡的邏輯與git reset不一樣,如果想回到Second commit的版本,就需要抵消掉Third commit的修改。所以這裡應該git revert Third commit的版本號碼

3、revert的過程中可能會有衝突,git status查看衝突位置,解決衝突,git commit 檔案名稱(無需git add)

4、git log --pretty=online,Third commit並沒有丟失,而是多了一個revert版本,你可以         git log -p查看每個版本的修改,發現revert的版本所做的修改與Third commit恰恰相反,正好抵消掉了它的修改。

忠告:如果你的回退涉及到了遠程分支,在版本回退時最好使用revert,因它沒有修改版本曆史;如果使用reset,因為你的reset操作,會使你比遠程少了幾個提交,遠程會提示你落後於遠程版本,應該先git pull代碼,那麼你的reset操作又有何意義呢。(git push -f 強推可以做到,但不推薦這樣做)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.