Git存档将未版本控制的文件添加到子目录

Posted

技术标签:

【中文标题】Git存档将未版本控制的文件添加到子目录【英文标题】:Git archive adding not versioned file to subdirectory 【发布时间】:2021-12-28 20:15:59 【问题描述】:

尝试使用这样的命令制作 zip 存档

git archive -v -o app.zip --add-file=.env --add-file=.ebextensions/my-scripts.config HEAD

通过 --add-file 选项添加 2 个未受版本控制的文件。

问题是 my-script.config 添加到存档的根目录,但我需要它在最初的 .ebextensions 文件夹中。

有没有办法用git archive命令来实现?

【问题讨论】:

"问题是 my-script.config 添加到存档的根目录..." 这就是 git archive --add-file works 的方式 — 文件添加到 --prefix ,默认是根。 “有没有办法用git archive 命令实现它?” 很可能没有。您可以尝试使用zipgit archive 后面添加文件。 【参考方案1】:

这在任何地方都没有记录,所以我不确定你应该指望多少,但测试表明它有效:

git archive -v -o app.zip \
    --add-file=.env \
    --prefix=.ebextensions/ --add-file=.ebextensions/my-scripts.config \
    --prefix= HEAD

(全部作为没有反斜杠换行符的一行,或者在 sh / bash 中保留反斜杠)使用 Git 2.34 版可以解决问题。根据代码,它应该适用于所有具有 --add-file 的 Git 版本(2.29 及更高版本)。本质上,--prefix 设置了 current 前缀; --add-file 添加一个文件,其路径名由前缀加上路径的尾部部分组成,--prefix 然后 替换 前缀,这样您就不必影响其余的操作.

【讨论】:

是的,它有效!非常感谢!只是对子文件夹前缀路径稍作修正,它应该是 --prefix=.ebextensions/ @AndreyK:是的,我在测试时发现了这一点,然后忘了把它放在上面的文字中,哎呀。会修复的。

以上是关于Git存档将未版本控制的文件添加到子目录的主要内容,如果未能解决你的问题,请参考以下文章

git 操作

实习前必学技术之一版本控制工具Git

.GIT(版本控制)目录在电脑的啥地方

版本控制:git

删除本地git版本库中受版本控制的文件

git 如何忽略已经加入到版本控制的文件