2010-12-16 48 views

回答

369

您正在尋找git diff。根據您的確切情況,有三個有用的方法來使用它:

# show differences between index and working tree 
# that is, changes you haven't staged to commit 
git diff [filename] 
# show differences between current commit and index 
# that is, what you're about to commit 
# --staged does exactly the same thing, use what you like 
git diff --cached [filename] 
# show differences between current commit and working tree 
git diff HEAD [filename] 

它會在目錄遞歸地工作,如果沒有路徑給出,它顯示了所有更改。

+1

@ sveilleux2不,只需運行沒有任何參數的git diff - 如答案的最後一句話所示,如果沒有給出路徑,它將顯示所有更改。 ('[filename]'中的括號表示一個可選的參數)。用'*'讓shell列出所有的文件,所以如果你在子目錄中,你只能得到子目錄中的東西(不是整個回購),你會錯過隱藏文件的變化。 – Cascabel 2015-05-20 17:14:05

+0

#顯示當前提交和索引 #也就是你即將提交 git的差異--cached [文件名] 做之間的差異,你不是說: #顯示當前的差異承諾和索引 #這是,你要做什麼_push_? git diff --cached [filename] – ofarooq 2017-04-07 12:46:15

+2

要查看添加文件(即「git add」後)的差異,請執行「git diff --staged [filename]」 – Sidtharthan 2017-07-28 03:40:43

22

使用git-diff:工作樹和索引或樹之間

git diff yourfile 
5

git diff filename

4

git diff

顯示的變化,指數和樹之間的變化,二者之間的變化樹或磁盤上兩個文件之間的更改。

+0

報價單的有點太多了 - 默認情況下,它執行的第一個比較:工作樹和索引之間。 – Cascabel 2010-12-16 02:00:40

3

請記住,您正在提交更改,而不是文件。

由於這個原因,我不使用git add -p(或等效的magit)來添加我的更改是非常罕見的。

+0

git不**處理變化 - 試圖去思考它是否是混淆和錯誤的主要來源。 git處理快照。 – 2017-07-05 06:12:43

4

對我來說git add -p是最有用的方式(和我打算由git開發人員考慮?)來檢查所有未分離的更改(它顯示每個文件的差異),選擇一組應該與提交一起進行的更改,那麼當你完成所有這些操作時,請使用git commit,然後重複下一次提交。然後,您可以使每個提交都成爲一組有用或有意義的更改,即使它們發生在各種文件中。我還建議爲每張票或類似活動創建一個新的分支,並使用checkout(如果您不想在切換之前不想提交,可能使用git stash)在它們之間切換,但如果您正在做很多快速更改,這可能是一個痛苦。不要忘記經常合併。

+0

因此,而不是git添加文件名使用git add -p? – Angela 2015-06-13 06:09:45

0

您還可以使用友好的文本編輯器。它們顯示已修改的行上的顏色,添加的行的另一種顏色,刪除的行的另一種顏色等。

這樣做的好文本編輯器是GitHub's Atom 1.0

+0

Bash顯示顏色變化以及:) – Sander 2015-08-25 06:57:59

2
git diff <path>/filename 

路徑可以在你的是或完整的系統路徑,直到文件
如果你在粘貼修改的文件路徑的項目還
與路徑使用修改的文件:git status

+0

它的工作原理!謝謝 – 2017-07-05 08:13:07

0

好了,我的當你不想關心文件列表的情況下。只顯示他們。

當您已經運行git add處理文件列表:

$ git diff --cached $(git diff --cached --name-only) 

可以使用不添加文件,而不--cached選項相同。

$ git diff $(git diff --name-only) 

的「緩存」選項的Git命令別名:

$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)' 
相關問題