假設個人工做目錄中有未提交的更改。 如何在沒必要建立提交的狀況下從那些補丁中建立補丁? git
若是你想作二進制文件,在運行git diff
時給出一個--binary
選項。 bash
若是您還沒有提交更改,則: app
git diff > mypatch.patch
但有時會發生你正在作的部份內容是未跟蹤的新文件,而且不會出如今你的git diff
輸出中。 所以,作補丁的一種方法是爲新提交git add
全部內容( git add
每一個文件,或者只是git add .
)但不執行提交,而後: spa
git diff --cached > mypatch.patch
若是要將二進制文件添加到補丁(例如mp3文件),請添加「二進制」選項: code
git diff --cached --binary > mypatch.patch
您能夠稍後應用補丁: orm
git apply mypatch.patch
注意:您還能夠使用--staged
做爲--cached
的同義詞。 get
要建立包含已修改和新文件(暫存)的修補程序,您能夠運行: it
git diff HEAD > file_name.patch
git diff
用於未分級的更改。 git diff --cached
用於分階段更改的git diff --cached
。 io
我喜歡: form
git format-patch HEAD~<N>
其中<N>
是要保存爲修補程序的最後提交數。
有關如何使用該命令的詳細信息,請參閱DOC
UPD
在這裏,您能夠找到如何應用它們。
UPD對於那些沒有理解format-patch
添加別名:
git config --global alias.make-patch '!bash -c "cd ${GIT_PREFIX};git add .;git commit -m ''uncommited''; git format-patch HEAD~1; git reset HEAD~1"'
而後在項目存儲庫的任何目錄中運行:
git make-patch
此命令將在當前目錄中建立0001-uncommited.patch
。 修補程序將包含下一個命令可見的全部更改和未跟蹤文件:
git status .