如何在两个提交之间创建git bundle并包含它们之间的所有标签?

gk7wooem  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(192)

例如,这里我有一些v0.5.1和v0.5.4之间的提交:

git log --pretty=oneline  v0.5.1..v0.5.4
ec7a6416580276d2f9975802f487c1216dcc540d (tag: v0.5.4) Release v0.5.4
64b2b14d3123c619db5bbfac718c579e8daa8da8 fix: decoding nested dicts with tuple keys (#297)
ccff0b51418b4c41b63ee48f31126435e5cfd2bd (tag: v0.5.3) Release v0.5.3
2e51315f0fd7e088a66346e67224f38eea0da4a3 (tag: 0.5.3) chore(deps): update Pipfile.lock
0d9d73ac9f8dd5dbe9712100ac977fa9bad51602 chore(deps): pin pytest to >=6.2.3 to bump its transitive dep py
3dc59e01ccdfec619ee4e4c3502b9759b67c3fa8 (tag: v0.5.2) Release v0.5.2
5aba46a417ce48137f16f0f7fd3cc51ccdfee8c3 Revert "refactor!: remove `encode_json` optional arg for `to_dict`"
da2f98104ae5722af5d57f0c0118f903f0f12a91 docs: formatting
f8ee0c04590cc31ebe039e7010a8a668a42f97fb Update README.md

字符串
我想导出一个包含这些提交的bundle:

$ git bundle create ../notag-v0.5.4.bundle v0.5.1..v0.5.4
Enumerating objects: 44, done.
Counting objects: 100% (44/44), done.
Compressing objects: 100% (26/26), done.
Total 33 (delta 22), reused 17 (delta 7), pack-reused 0

$ git bundle list-heads ../notag-v0.5.4.bundle
ec7a6416580276d2f9975802f487c1216dcc540d refs/tags/v0.5.4


这里我们可以看到它不包括v0.5.2和v0.5.3
然而,如果我添加--tags,它包含了更多的提交:

$ git bundle create ../v0.5.4.bundle --tags v0.5.1..v0.5.4
Enumerating objects: 432, done.
Counting objects: 100% (432/432), done.
Compressing objects: 100% (159/159), done.
Total 402 (delta 256), reused 363 (delta 220), pack-reused 0


从33包变为402包,包括v0.5.1之后的所有标签
到目前为止,唯一有效的方法是使用标签列表:

$ git bundle create ../v0.5.4.bundle v0.5.1..v0.5.4 v0.5.2 v0.5.3
Enumerating objects: 44, done.
Counting objects: 100% (44/44), done.
Compressing objects: 100% (26/26), done.
Total 33 (delta 22), reused 17 (delta 7), pack-reused 0

$ git bundle list-heads ../v0.5.4.bundle
ec7a6416580276d2f9975802f487c1216dcc540d refs/tags/v0.5.4
3dc59e01ccdfec619ee4e4c3502b9759b67c3fa8 refs/tags/v0.5.2
ccff0b51418b4c41b63ee48f31126435e5cfd2bd refs/tags/v0.5.3


但这是非常烦人的,我必须手动找出这些提交之间的标签。
在更复杂的情况下,它不是简单的版本,如标签。它可能是修复问题220,功能合并等。它可以是任何措辞,没有办法告诉顺序。
什么是真正的爱?

r8uurelv

r8uurelv1#

如果我正确理解了您的要求:您希望列出放置在v0.5.4的父代(任何父代)上的标记,并且其历史记录包含v0.5.1
您可以直接使用git tag

git tag --contains v0.5.1 --merged v0.5.4

字符串
检查git help tag以查看其他相关选项--例如:--list "v[0-9]*"将只列出以“v”开头并后跟数字的标记

相关问题