单个缺失提交的 git-cherry 等价物是什么?
What is the git-cherry equivalent for a single missing commit?
如何检查单个提交是否已应用于特定分支?
以git-cherry
的文档为例:
$ git log --graph --oneline --decorate --boundary origin/master...topic
* 7654321 (origin/master) upstream tip commit
[... snip some other commits ...]
* cccc111 cherry-pick of C
* aaaa111 cherry-pick of A
[... snip a lot more that has happened ...]
| * cccc000 (topic) commit C
| * bbbb000 commit B
| * aaaa000 commit A
|/
o 1234567 branch point
$ git cherry origin/master topic
- cccc000... commit C
+ bbbb000... commit B
- aaaa000... commit A
我怎么知道 cccc000
与 - cccc111
具有相同的内容,而不必处理整棵树?这可能吗?
请注意 git-cherry
依赖于 补丁内容(差异),这是问题的关键。
git log
有一个 --cherry-mark
选项,它添加了关于对称差异的信息(a.k.a“3 点运算符”A...B
)
尝试 运行 :
git log --oneline --graph --boundary --cherry-mark master...topic
您应该看到唯一的提交以 +
为前缀(或 *
当 --graph
选项打开时),并且提交出现在两侧以 =
为前缀。
如果您想知道如何匹配提交:git patch-id
计算 cherry-pick / rebase 使用的结果。
git patch-id
期望在 STDIN 上有一个补丁(由 git show
或 git diff
生成):
$ git show <commit-ish> | git patch-id
<hash for patch> <hash of input revision, if it can determine a revision>
例如:您可以在 A...B
中查看所有单个提交的 patch-id
s :
git rev-list origin/master...forkpoint | while read sha1; do
git show $sha1 | git patch-id
done
您可以在脚本中使用此结果,以更明确地打印提交的链接方式。
如何检查单个提交是否已应用于特定分支?
以git-cherry
的文档为例:
$ git log --graph --oneline --decorate --boundary origin/master...topic
* 7654321 (origin/master) upstream tip commit
[... snip some other commits ...]
* cccc111 cherry-pick of C
* aaaa111 cherry-pick of A
[... snip a lot more that has happened ...]
| * cccc000 (topic) commit C
| * bbbb000 commit B
| * aaaa000 commit A
|/
o 1234567 branch point
$ git cherry origin/master topic
- cccc000... commit C
+ bbbb000... commit B
- aaaa000... commit A
我怎么知道 cccc000
与 - cccc111
具有相同的内容,而不必处理整棵树?这可能吗?
请注意 git-cherry
依赖于 补丁内容(差异),这是问题的关键。
git log
有一个 --cherry-mark
选项,它添加了关于对称差异的信息(a.k.a“3 点运算符”A...B
)
尝试 运行 :
git log --oneline --graph --boundary --cherry-mark master...topic
您应该看到唯一的提交以 +
为前缀(或 *
当 --graph
选项打开时),并且提交出现在两侧以 =
为前缀。
如果您想知道如何匹配提交:git patch-id
计算 cherry-pick / rebase 使用的结果。
git patch-id
期望在 STDIN 上有一个补丁(由 git show
或 git diff
生成):
$ git show <commit-ish> | git patch-id
<hash for patch> <hash of input revision, if it can determine a revision>
例如:您可以在 A...B
中查看所有单个提交的 patch-id
s :
git rev-list origin/master...forkpoint | while read sha1; do
git show $sha1 | git patch-id
done
您可以在脚本中使用此结果,以更明确地打印提交的链接方式。