从当前工做目录中的更改建立一个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 .
相关文章
相关标签/搜索