從當前工做目錄中的更改建立一個git補丁

假設個人工做目錄中有未提交的更改。 如何在沒必要建立提交的狀況下從那些補丁中建立補丁? git


#1樓

若是你想作二進制文件,在運行git diff時給出一個--binary選項。 bash


#2樓

若是您還沒有提交更改,則: 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


#3樓

要建立包含已修改和新文件(暫存)的修補程序,您能夠運行: it

git diff HEAD > file_name.patch

#4樓

git diff用於未分級的更改。 git diff --cached用於分階段更改的git diff --cachedio


#5樓

我喜歡: 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 .
相關文章
相關標籤/搜索