jca*_*llo 1690
如果您尚未提交更改,则:
git diff > mypatch.patch
Run Code Online (Sandbox Code Playgroud)
但有时候你正在做的部分事情是新文件,这些文件是未跟踪的,不会出现在你的git diff
输出中.因此,执行补丁的一种方法是为新提交暂存所有内容(但不执行提交),然后:
git diff --cached > mypatch.patch
Run Code Online (Sandbox Code Playgroud)
如果要将二进制文件添加到补丁(例如mp3文件),请添加"二进制"选项:
git diff --cached --binary > mypatch.patch
Run Code Online (Sandbox Code Playgroud)
您可以稍后应用补丁:
git apply mypatch.patch
Run Code Online (Sandbox Code Playgroud)
sig*_*ice 363
git diff
对于未分级的更改. git diff --cached
分阶段的变化.
Mer*_*ham 80
git diff
并将git apply
用于文本文件,但不适用于二进制文件.
您可以轻松创建完整的二进制补丁,但您必须创建临时提交.完成临时提交后,可以使用以下命令创建补丁:
git format-patch <options...>
Run Code Online (Sandbox Code Playgroud)
制作补丁后,运行以下命令:
git reset --mixed <SHA of commit *before* your working-changes commit(s)>
Run Code Online (Sandbox Code Playgroud)
这将回滚您的临时提交.最终结果会使您的工作副本(故意)变脏,并使用您最初的相同更改.
在接收方,您可以使用相同的技巧将更改应用于工作副本,而无需提交历史记录.只需应用补丁,和git reset --mixed <SHA of commit *before* the patches>
.
请注意,您可能必须完全同步才能使整个选项生效.我在应用补丁程序时看到了一些错误,因为制作它们的人并没有像我那样有太多的变化.可能有办法让它发挥作用,但我没有深入研究它.
以下是如何在Tortoise Git中创建相同的补丁(不是我建议使用该工具):
Tortoise Git
- >Create Patch Serial
Since
:FETCH_HEAD
将工作,如果你是良好的同步)Tortise Git
- >Show Log
reset "<branch>" to this...
Mixed
选项以及如何应用它们:
Tortoise Git
- >Apply Patch Serial
Tortise Git
- >Show Log
reset "<branch>" to this...
Mixed
选项小智 30
要创建包含已修改和新文件(暂存)的修补程序,您可以运行:
git diff HEAD > file_name.patch
Run Code Online (Sandbox Code Playgroud)
Eug*_*kov 11
我喜欢:
git format-patch HEAD~<N>
Run Code Online (Sandbox Code Playgroud)
哪里<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"'
Run Code Online (Sandbox Code Playgroud)
然后在项目存储库的任何目录下运行:
git make-patch
Run Code Online (Sandbox Code Playgroud)
该命令将0001-uncommited.patch
在您当前的目录中创建。修补程序将包含所有更改和未跟踪的文件,这些内容和下一条命令可见:
git status .
Run Code Online (Sandbox Code Playgroud)
我们也可以指定文件,只包含有相对变化的文件,特别是当它们跨越多个目录时,例如
git diff ~/path1/file1.ext ~/path2/file2.ext...fileN.ext > ~/whatever_path/whatever_name.patch
Run Code Online (Sandbox Code Playgroud)
我发现答案或评论中没有说明这一点,这些都是相关且正确的,所以选择添加它。显式优于隐式!
归档时间: |
|
查看次数: |
444481 次 |
最近记录: |