2011-05-01 42 views
10

有時我在沒有安裝X Window的系統上工作,並且無法使用Git GUI。更好的git add -p?

什麼是git add -p的現有控制檯替代品?

我喜歡它所做的幾乎所有事情(不僅僅是Git GUI),但是我討厭它不會讓我查看整個圖片並選擇我想要查看這些塊的順序。這對Git GUI而言僅僅是git add -p的唯一實際優勢,但它是相當關鍵的。

我試過tig,但我不喜歡它提供的用戶體驗。

有什麼建議嗎?

+0

您是否知道'g'命令?這當然不是理想的,但它確實會給你一個所有胖子的名單和移動到一個特定大塊的能力(有效地讓你選擇訂單)。 – 2011-05-02 14:37:15

+0

我知道它,但它不夠好 - 我需要在整個文件中查看所有的hunk,以決定是否要現在提交它們。 – 2011-05-04 02:29:43

回答

19

Vim有一個插件 '逃犯'

編輯:在linked vimcast (comments)是優秀的,我推薦它。我想補充的提示,有通常不會是一個需要輸入手寫:diffget:diffput,因爲你可以通過PRESSION同樣直接做他的正常/可視模式dØdp

開始與該功能似乎是:Gstatus


Vim的最好的命令是終端編輯器(這恰巧有一個GUI口太)

逃犯插件只會讓您可以將索引和工作樹版本的文件彼此並排編輯,並讓您分散/擴散,直到您滿意爲止。 Vim的差異模式非常複雜,比git add --patch更靈活/直觀。

  • scrollbinding
  • 語法高亮和幀內線(wordlevel)DIFF同時突出
  • 自動DIFF(不變區)摺疊

您可以get fugitive here

:he fugitive段:

編輯工作樹中的文件並進行一些更改。使用|:Gdiff |打開 索引版本。使用| do |和| dp |在各種各樣的帥哥帶來的文件在 同步,或使用|:Gread |吸納所有變化。將索引版本寫入 階段的文件。

+0

我想emacs應該沿着同一條線...... – 2011-05-02 02:29:46

+0

你有沒有看過逃亡? - 也就是說,我很肯定Emacs會有一個差異模式,是一個通用編輯器 – sehe 2011-05-02 06:26:57

+3

最近還有一個[Vimcast演示了逃犯的'git add --patch'等價物](http://vimcasts.org/發作/逃犯-VIM-工薪與最GIT-索引/)。 – 2011-05-07 05:37:30

0

怎麼樣一個簡單的

git diff 

「查看整個畫面」,然後

git add -i 
5 

來選擇要提交的第一個文件,舞臺上的帥哥,然後用下一個文件重複該過程?

+1

'5'在那裏有意思嗎? – sehe 2011-05-01 21:56:09

+1

我希望能夠同時做到這一切。通常我有幾個不同文件系列的未提交的文件(這將是每個提交一個系列文件)。每次運行'git add -p'循環都非常繁瑣。此外'git add -i'的使用與在'git add -p'調用中使用實際文件名相同,沒有太大的改進。 – 2011-05-01 21:58:39

+0

@sehe:這是一個文件列表菜單項目編號。 – 2011-05-01 21:58:56

0

如果我和你的情況相同(混合使用某些胖子比其他胖子更重要),我會將較小的胖子提交給他們自己的提交,並提供容易區分的提交消息, '更重要'的區別,以便它們不妨礙diff或git add -i。

對於「權限較低」的區塊,容易區分的提交消息應該很容易在稍後處理。