2017-06-15 78 views
0

以下是git-status docs的狀態碼及其含義。幾個狀態代碼的含義相同。有沒有一種方法可以存儲這些數據,不需要我手動創建整個樹,但仍然可以通過類似statuses.getMeaning(x, y)之類的API快速搜索樹?解析git-status

X   Y  Meaning 
------------------------------------------------- 
      [MD] not updated 
M  [ MD] updated in index 
A  [ MD] added to index 
D   [ M] deleted from index 
R  [ MD] renamed in index 
C  [ MD] copied in index 
[MARC]   index and work tree matches 
[ MARC]  M work tree changed since index 
[ MARC]  D deleted in work tree 
------------------------------------------------- 
D   D unmerged, both deleted 
A   U unmerged, added by us 
U   D unmerged, deleted by them 
U   A unmerged, added by them 
D   U unmerged, deleted by us 
A   A unmerged, both added 
U   U unmerged, both modified 
------------------------------------------------- 
?   ? untracked 
!   ! ignored 
------------------------------------------------- 
+0

順便說一句,在回答之後,我不確定你的問題到底是什麼。請記住,這是總結了兩個單獨的'git diff'命令的結果。 – torek

回答

1

這些實際上並不明確。

有兩種方法可以查看/查看此:

  • 取消合併狀態存在當且僅當有非零級數,所以你可以檢查該(git ls-files --stage)。這也讓你看到每個索引條目,這可能是有用的,這取決於你的最終目標。

  • 或者,請注意在git status--porcelain輸出中,除兩個未合併狀態外,其他所有狀態都至少有一個U。兩個不是AADD,並且這兩個狀態不能出現在任何合併未處理的情況下:如果X是A,則Y必然是空格,MD。如果Y是D,則X必須是空格或MARC(從不D)中的一個。

+0

感謝您的回覆!我的意思是,如何以易於搜索的方式構建這張狀態代碼表,並且(希望)不需要我鍵入每個可能的代碼? – maxhallinan

+0

你可以展開'[MARC]'類型的項目,最後得到一張大桌子。每列有九個可能的代碼(空間,M,A,R,C,D,U,?,!);而一些永遠不會出現在組合中(你總是得到兩個或兩個!),這會給你一個81元素的矩陣,你可以用X(或to_value(X))和Y(或to_value( Y)'),還是與combine(X,Y)(其中combine()函數取決於您:做任何有用的編程語言)。 – torek

+0

如果事先將「!」和「?」情況分開,則每列留下7個代碼,以便表或矩陣有49個條目。其中有些仍然不會發生,但這似乎是收益遞減的一點。但是,如果你的編程語言有簡單的字典查找,你可以構建最小矩陣,並使用'meaningings [X] [Y]',其中'meaningings [X]'僅存在於有效的X,'[Y]'入口在那個映射中只存在Y對於給定的X有效。 – torek