假设个人工做目录中有未提交的更改。 如何在没必要建立提交的状况下从那些补丁中建立补丁? 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 .