git:从另一个分支获取文件模式,而不更改文件内容

时间:2018-01-04 20:30:15

标签: git

我需要将我的仓库中的所有文件的文件模式从master复制到我的feature分支。但我不想从master获取文件内容。

这可能吗?

1 个答案:

答案 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 可执行文件。根据需要,使用pathchmod,两者或其他一些命令组合,根据需要更改当前索引条目和/或工作树文件的模式。

您未更新的任何文件都不在选定的提交中;任何 git update-index --chmod ,因为路径不存在,在工作树和/或索引中不在当前工作树/索引中,因此无法更改模式(因此可能不在当前提交中,也不会在下一次提交中)。使用这些文件执行您之前选择的任何内容。