我注意到,雖然在一張或兩張票上工作,但如果我離開,我不確定我在做什麼,發生了什麼變化等等。如何在提交git之前查看文件中發生了什麼變化?
有沒有辦法在git add和git commit之前查看給定文件所做的更改?
我注意到,雖然在一張或兩張票上工作,但如果我離開,我不確定我在做什麼,發生了什麼變化等等。如何在提交git之前查看文件中發生了什麼變化?
有沒有辦法在git add和git commit之前查看給定文件所做的更改?
您正在尋找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]
它會在目錄遞歸地工作,如果沒有路徑給出,它顯示了所有更改。
使用git-diff
:工作樹和索引或樹之間
git diff yourfile
git diff filename
請記住,您正在提交更改,而不是文件。
由於這個原因,我不使用git add -p
(或等效的magit)來添加我的更改是非常罕見的。
git不**處理變化 - 試圖去思考它是否是混淆和錯誤的主要來源。 git處理快照。 – 2017-07-05 06:12:43
對我來說git add -p
是最有用的方式(和我打算由git開發人員考慮?)來檢查所有未分離的更改(它顯示每個文件的差異),選擇一組應該與提交一起進行的更改,那麼當你完成所有這些操作時,請使用git commit
,然後重複下一次提交。然後,您可以使每個提交都成爲一組有用或有意義的更改,即使它們發生在各種文件中。我還建議爲每張票或類似活動創建一個新的分支,並使用checkout
(如果您不想在切換之前不想提交,可能使用git stash
)在它們之間切換,但如果您正在做很多快速更改,這可能是一個痛苦。不要忘記經常合併。
因此,而不是git添加文件名使用git add -p? – Angela 2015-06-13 06:09:45
您還可以使用友好的文本編輯器。它們顯示已修改的行上的顏色,添加的行的另一種顏色,刪除的行的另一種顏色等。
這樣做的好文本編輯器是GitHub's Atom 1.0。
Bash顯示顏色變化以及:) – Sander 2015-08-25 06:57:59
git diff <path>/filename
路徑可以在你的是或完整的系統路徑,直到文件
如果你在粘貼修改的文件路徑的項目還
與路徑使用修改的文件:git status
它的工作原理!謝謝 – 2017-07-05 08:13:07
好了,我的當你不想關心文件列表的情況下。只顯示他們。
當您已經運行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)'
@ sveilleux2不,只需運行沒有任何參數的git diff - 如答案的最後一句話所示,如果沒有給出路徑,它將顯示所有更改。 ('[filename]'中的括號表示一個可選的參數)。用'*'讓shell列出所有的文件,所以如果你在子目錄中,你只能得到子目錄中的東西(不是整個回購),你會錯過隱藏文件的變化。 – Cascabel 2015-05-20 17:14:05
#顯示當前提交和索引 #也就是你即將提交 git的差異--cached [文件名] 做之間的差異,你不是說: #顯示當前的差異承諾和索引 #這是,你要做什麼_push_? git diff --cached [filename] – ofarooq 2017-04-07 12:46:15
要查看添加文件(即「git add」後)的差異,請執行「git diff --staged [filename]」 – Sidtharthan 2017-07-28 03:40:43