我需要编写一个脚本,为SHA1提交号列表创建补丁.
我尝试过使用git format-patch <the SHA1>
,但是从那个SHA1开始为每个提交生成一个补丁.在生成几百个补丁之后,我不得不杀死这个过程.
有没有办法只为特定的SHA1生成补丁?
man*_*lds 1841
尝试:
git format-patch -1 <sha>
Run Code Online (Sandbox Code Playgroud)
要么
git format-patch -1 HEAD
Run Code Online (Sandbox Code Playgroud)
根据上面的文档链接,该-1
标志告诉git应该在补丁中包含多少次提交;
- <N>
从最顶层的提交准备补丁.
使用以下命令应用修补程序:
git am < file.patch
Run Code Online (Sandbox Code Playgroud)
Sri*_*ali 272
要从特定sha1哈希中从最顶层提交生成补丁:
git format-patch -<n> <SHA1>
Run Code Online (Sandbox Code Playgroud)
头文件中的最后10个补丁在一个补丁文件中:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
Run Code Online (Sandbox Code Playgroud)
bra*_*don 82
假设您在提交1之后提交了id 2,那么您将能够运行:
git diff 2 1 > mypatch.diff
Run Code Online (Sandbox Code Playgroud)
其中2和1是SHA哈希.
ken*_*orb 55
这个命令(正如@ Naftuli Tzvi Kay所建议的那样):
git format-patch -1 HEAD
Run Code Online (Sandbox Code Playgroud)
替换HEAD
为特定的散列或范围.
将为最新提交生成补丁文件,格式化为类似UNIX邮箱格式.
-<n>
- 从最顶层的提交准备补丁.
然后,您可以通过以下方式重新应用邮箱格式的补丁文件:
git am -3k 001*.patch
Run Code Online (Sandbox Code Playgroud)
zdr*_*oft 27
git format-patch commit_Id~1..commit_Id
git apply patch-file-name
Run Code Online (Sandbox Code Playgroud)
快速简单的解决方案.
小智 22
使用 commit-id 创建 git 补丁
$ git format-patch -1 commit-id
Run Code Online (Sandbox Code Playgroud)
此命令创建具有以下文件名的补丁
0001-commit-message.patch
Run Code Online (Sandbox Code Playgroud)
应用补丁:
$ git am 0001-commit-message.patch
Run Code Online (Sandbox Code Playgroud)
如果您想确保(单个提交)补丁将应用于特定提交之上,您可以使用新的git 2.9(2016年6月)选项 git format-patch --base
git format-patch --base=COMMIT_VALUE~ -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git format-patch --base=auto -M -C COMMIT_VALUE~..COMMIT_VALUE
# or
git config format.useAutoBase true
git format-patch -M -C COMMIT_VALUE~..COMMIT_VALUE
Run Code Online (Sandbox Code Playgroud)
请参阅提交bb52995,提交3de6651,提交fa2ab86,提交ded2c09(2016年4月26日)由Xiaolong Ye(``).
(由Junio C gitster
Hamano合并- -在提交72ce3ff,2016年5月23日)
format-patch
:添加'--base
'选项以记录基础树信息维护者或第三方测试人员可能想知道补丁系列适用的确切基础树.教git格式 - 修补'
--base
'选项以记录基础树信息并将其附加到第一条消息的末尾(系列中的求职信或第一个补丁).基本树信息由"基本提交"组成,这是一个众所周知的提交,它是项目历史中其他人工作的稳定部分的一部分,以及零或更多"必备补丁",这些都是众所周知的飞行中的补丁尚未成为"基础提交"的一部分,需要在应用补丁之前以拓扑顺序在"基础提交"之上应用.
"base commit"显示为"
base-commit:
",后跟提交对象名称的40-hex.
"先决条件补丁"显示为"prerequisite-patch-id:
",后跟40-hex"补丁ID",可以通过"git patch-id --stable
"命令传递补丁获得.
要从特定提交(而不是最后一次提交)生成路径:
git format-patch -M -C COMMIT_VALUE~1..COMMIT_VALUE
Run Code Online (Sandbox Code Playgroud)
在我的Mercurial背景下,我打算使用:
git log --patch -1 $ID > $file
Run Code Online (Sandbox Code Playgroud)
但我现在正在考虑使用git format-patch -1 $ID
。
归档时间: |
|
查看次数: |
568145 次 |
最近记录: |