我需要将我的仓库中的所有文件的文件模式从master
复制到我的feature
分支。但我不想从master
获取文件内容。
这可能吗?
答案 0 :(得分:2)
这是可能的,但不是微不足道的。您需要为此编写一小段代码。您还必须决定要对不相应的文件做什么:例如,如果master
的提示提交文件mastery.txt
在{{1}的提示提交中不存在,该怎么办?但是,feature
的提示提交有一个feature
的提示提交中不存在的文件featureful.dat
?
然后,您需要做的就是获取要从中复制模式的提交中指定的所有路径的模式及其名称。为此,请使用master
。将输出保存在某处。例如:
git ls-tree -r commit-specifier
查看输出;请注意,它由以下形式的行组成:
git ls-tree -r master > /tmp/master-info
和
100644 blob <hash><TAB><path>
符号链接(模式120000)和子模块(模式160000,我认为)可能还有其他行,您可以在这里忽略。
每个100644表示在文字 TAB 字符后列出的特定 100755 blob <hash><TAB><path>
不可执行文件,并且每个100755表示相应的 path
是可执行文件。根据需要,使用path
,chmod
,两者或其他一些命令组合,根据需要更改当前索引条目和/或工作树文件的模式。
您未更新的任何文件都不在选定的提交中;任何 git update-index --chmod
,因为路径不存在,在工作树和/或索引中不在当前工作树/索引中,因此无法更改模式(因此可能不在当前提交中,也不会在下一次提交中)。使用这些文件执行您之前选择的任何内容。