Git Bundle创建时如何从文件读取--not排除的修订版本?
解决Git Bundle从文件读取排除修订的问题
可行方案
方案1:使用xargs直接传递文件中的修订
xargs -a ../revlisttoexclude.txt git bundle create /path/to/mybundle --all --tags --not
xargs -a会读取指定文件的每行内容,将其作为后续Git命令的参数,完美替代手动输入--not <rev_1> <rev_2> ...的效果。
方案2:转换修订格式后通过--stdin传递
sed 's/^/^/' ../revlisttoexclude.txt | git bundle create /path/to/mybundle --all --tags --stdin
Git中^<修订>是--not <修订>的简写,sed命令给文件中每行的修订开头加上^,再通过--stdin按行传递给Git,即可实现排除指定修订的需求。
原命令失败的原因
echo "$(cat ../revlisttoexclude.txt)"会将文件中的换行替换为空格,所有修订被合并成一个字符串,Git无法识别为多个有效修订,因此没有排除任何内容。- Git 2.42.0调整了
--stdin的行为,现在默认按每行一个修订读取输入,必须保证每个修订单独占一行才能被正确识别。
内容的提问来源于stack exchange,提问作者upInCloud
相关产品推荐
相关产品推荐

