2014-04-25 74 views
1

我經常在開發時添加一些調試代碼,因此我需要稍後刪除這些更改。撤消本地更改交互

目前,我檢查git diff並手動刪除更改,或者只需鍵入git checkout -- myfilename如果我想撤消整個文件。

我喜歡交互式補丁功能(git add -i)。 git中是否有工具或命令可以撤銷交互式更改,如git add -i

換句話說:我想交互式地檢出文件和hunks出索引。

回答

2

你在找什麼,我認爲是git reset --patchgit reset -p

the docs

git的復位(--patch | -p)[] [ - ] [... ]

在索引和(默認爲HEAD)之間的差異中交互式地選擇hunk。選定的區塊與指數相反。

這意味着git reset -p與git add -p相反,即可以使用它來選擇性地重置hunk。請參閱git-add(1)的「交互模式」部分,瞭解如何操作--patch模式。

git add -pit says

-p

交互方式選擇索引和工作樹之間的補丁帥哥,並將它們添加到索引。這使用戶有機會在將修改後的內容添加到索引之前查看差異。

這有效地運行加 - 交互,但繞過最初的命令菜單,並直接跳轉到patch子命令。有關詳情,請參閱「交互模式」。

因此,基本上與git reset -p你可以選擇你重置。


編輯:

作爲git checkout Manual Page提到:

-p

--patch

在交互之間的差選擇所述大塊(或索引,如果未指定)和工作樹。然後選擇的hunk被反向應用於工作樹(如果指定了a,索引)。

這意味着您可以使用git checkout -p來選擇性地放棄當前工作樹中的編輯。請參閱git-add(1)的「交互模式」部分,瞭解如何操作--patch模式。

所以,你正在尋找的命令是

$git checkout -p 
+1

哦不錯命令THX,但是這不是我尋找。 'git reset -p'只允許我暫停階段性更改。但我喜歡**撤消**未凍結的變化,如'git checkout - file'做 – nickel715

+1

@ nickel715想我誤解了:-)看到我編輯的新答案 –

+0

omg謝謝你,這真棒,完美的作品。你知道是否還有一個選項可以交互地添加整個文件嗎?就像'git add -i'和更新模式一樣? – nickel715