git 中如何撤銷部分修改?

時間 2021-05-06 16:04:46

1樓:陳東澤

Git常用的撤銷操作 之前的總結希望可以幫到你A- = untracked 未跟蹤

A = tracked 已跟蹤未修改

A+ = modified - 已修改未暫存B = staged - 已暫存未提交

C = committed - 已提交未PUSHA- -> B : git add

B -> A- : git rm --cachedA -> A- : git rm --cachedA -> A+ : 修改檔案

A+ -> A : git checkout --A+ -> B : git add

B -> A+ : git reset HEADB -> C : git commit

C -> B : git reset --soft HEAD^修改最後一次提交:git commit --amend

2樓:佛陀小沙彌

以提問中修改了兩個檔案a、b為例,假設需要撤銷檔案a的修改,則修改後的兩個檔案:

1、如果沒有被git add到索引區

git checkout a 便可撤銷對檔案a的修改2、如果被git add到索引區,但沒有做git commit提交1)使用git reset將a從索引區移除(但會保留在工作區)git reset HEAD a2)撤銷工作區中檔案a的修改

git checkout a 3、如果已被提交,則需要先回退當前提交到工作區,然後撤銷檔案a的修改1)回退當前提交到工作區

git reset HEAD^2)撤銷工作區中檔案a的修改

git checkout a 補充:靈活使用以上操作的關鍵在於理解git中工作區、索引區的概念和git reset命令hard、mixed(default)、soft三種模式的區別,網上有很多這方面的文章,不再贅述。

3樓:姬軍翔-Jim

從我Note裡貼出來給你,注意這裡的Index是本地快取,Working Directory指的是本地還沒有提交到快取裡的修改。

for index -- Unstaging a Staged File / undo a added file

$ git reset HEAD benchmarks.rb

for Working directory -- Unmodifying a Modified File

git checkout -- benchmarks.rb

Or revert deleted folders

git checkout -- /root/vdi/vdia/third_party/ClientPlatform/src/

曾經把自己Note裡的一些高階指令整理後寫成《Git Cookbook》放在這裡:http://

4樓:奇奇仙境

修改了兩個檔案a與b並且沒有add和commit,此時這兩個檔案通過git status -s可以看到M狀態,若想單獨撤銷某乙個檔案修改,恢復到上一次提交時的狀態,可以執行git checkout -- [filename],即可將filename檔案的上乙個提交狀態檢出到當前工作區,filename就是要檢出的檔名。不影響其他檔案。

git checkout -- a

5樓:hater python

推薦git客戶端工具SmartGit,你只要開啟已經納入git版本控制的專案,就可以用SmartGit進行管理,例如commit、revert等等操作

如何在unix中利用sed修改部分內容?

零五 比方檔名是aa.txt,如果是命令輸出的,將命令結果轉向輸出到aa.txt 保留hour簡單 sed i s 0 9 0 9 0 9 0 9 g aa.txt ERROR替換的話,根據你的檔案要分兩步,先將檔案中的列數固定了,否則不好獲取替換的內容,按照你上面的輸出的規則,先替換 ERROR ...

如何排除適用贈與中的任意撤銷權?

也迪律師說法 法律規定行使任意撤銷權的條件包括 1 贈與合同尚未履行,2 贈與合同不具有社會公益和道德義務的性質 3 贈與合同尚未經過公證。具備上述條件的,贈與人方可行使任意撤銷權。如果,贈與人不符合上述任一條件的,則不能行使任意撤銷權 馮忠明教授 行使任意撤銷權的條件包括 1 贈與合同尚未履行,贈...

如何解決修改了vim的快捷鍵後,與部分外掛程式不相容的問題?

feileo 當然,辦法還是有的,可以通過函式呼叫在不同的輸入環境中改變鍵位 map。舉個例子,vim bookmarks 的鍵設定和 NERDTree 就有衝突,開啟目錄後 vim bookmarks 就不能正常工作,可以這麼設定 function BookmarkMapKeys nmap mm ...