[英]Undo recent “git add .” command fired on git bash
我錯誤地做了git add .
現在,我在暫存區中有多個文件。 我知道我可以使用git reset
撤消文件,但這將花費我的大部分時間。
我正在尋找可以節省時間的解決方案。 現在我想知道
有沒有一種方法可以撤消最后的git add .
命令在git上觸發。 這樣我就不必多次執行git reset file
。
如果上述方法不可行,那么有一種方法可以使用單個命令重置多個文件。
你已經上演你想保留籌備的文件,或者你願意擁有的所有文件回到完全不分級的?
后者非常簡單:如galath所評論的 ,使用git reset
帶任何其他參數。 這會執行--mixed
重置:
HEAD
,而HEAD
是當前提交,因此我們將當前提交移至其自身,不執行任何操作; 然后 HEAD
提交)。 (這兩個步驟是--soft
和--mixed
部分;如果沒有--hard
,則git reset
跳過擦除工作樹更改的第三步。顯然,您不希望刪除這些內容,因此不應使用--hard
。)
前者更難。 要獲取所有暫存文件的列表,請使用:
git diff --cached --name-only
如果要有選擇地重設大多數(但不是全部)文件,則可以將這些文件名寫入文件(最好是在工作樹之外),例如/tmp/list
,然后編輯該文件以刪除名稱您想繼續上演。 然后:
git reset -- $(cat /tmp/list)
要么:
xargs git reset -- < /tmp/list
在每個路徑名上運行git reset --
假設文件名中沒有空格; 如果存在,請使用其他shell技巧來僅在換行符處斷開(假設路徑名中沒有換行符)。
如果你一直在小心翼翼地上演一些但不是所有使用某些文件的git add -p
,通常可以收回這些使用git fsck --lost-found
,並通過所有產生的“晃來晃去斑點”戳,但是這是很不值得的努力。
看來這應該工作: git reset -p <file_name>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.