2011-03-04 53 views
75

在git的,如果我有從同一個文件一對夫婦帥哥上演在我的索引,我怎麼可以交互式unstage其中之一嗎?如何交互式地取消git中的某個特定塊?

是否有任何替代unstaging整個文件,然後再分期我想保持帥哥,或者手動撤銷更改工作副本,然後添加交互撤消那些變化?

回答

97

嘗試git reset --patch filename;根據documentation,這應該與git add --patch相反。簡稱-p也適用於這兩個命令。

+0

我不認爲我的版本(它是1.6.3.3),但這看起來像是正確的答案。 – 2011-03-04 00:50:07

+2

在這種情況下(假設你不能因爲某些原因升級),我建議你使用'git的藏匿處保存--keep-index'保存和重置你當前的工作副本的修改。然後,您可以重置文件並撤銷不需要的更改。如果您先將文件複製到某個臨時位置,則可以使用'diff'來保存您撤消的更改。然後,您可以再次添加文件(無需交互式添加,因爲您隱藏了您不感興趣的其他更改)。使用'git stash pop'獲取舊的更改,'diff'應用您未更改的更改。相當麻煩...... :-( – 2011-03-04 01:02:11

1

GitX有一個文件unstaging塊一個很好的用戶界面: enter image description here

官方客戶端尚未保持一段時間,但​​有更多的功能是在某些圈子裏流行。 (blog post about it

+1

對於Windows用戶在那裏,[Git的擴展(http://code.google.com/p/gitextensions/)具有同樣漂亮的UI。 – 2011-03-04 01:04:35

+3

如此做內置'git的gui',但我不知道我會用「好」;) – MatrixFrog 2011-03-04 02:24:52

+1

[SourceTree(http://www.sourcetreeapp.com/)(WINDOWS + MAC)也有一個很好的用戶界面。 – chrnola 2014-09-24 20:56:52