Git 合并分支时如何自动导出文件?

Git 合并分支时如何自动导出文件?,git,Git,我正在处理一个使用git存储库的网站,它有两个分支:主分支和开发分支 我在一个开发分支工作,当事情进展顺利时,我将它与主分支合并。然后我需要将整个目录复制到部署目录或上传到服务器 我想知道是否有任何方法可以在每次合并/提交主分支时自动将这些文件/更改导出/复制到另一个目录 我知道有一些nodejs插件,它监视一个目录,并在其中的一些文件发生更改时自动将文件上载到部署服务器。但我没有试过 如果您有更好的方式上传它们,而不必运行nodejs应用程序或使用git本身,我将不胜感激 谢谢。您可以设置一

我正在处理一个使用git存储库的网站,它有两个分支:主分支和开发分支

我在一个开发分支工作,当事情进展顺利时,我将它与主分支合并。然后我需要将整个目录复制到部署目录或上传到服务器

我想知道是否有任何方法可以在每次合并/提交主分支时自动将这些文件/更改导出/复制到另一个目录


我知道有一些nodejs插件,它监视一个目录,并在其中的一些文件发生更改时自动将文件上载到部署服务器。但我没有试过

如果您有更好的方式上传它们,而不必运行nodejs应用程序或使用git本身,我将不胜感激

谢谢。

您可以设置一个为您完成任务的。但是,当您执行
git合并时,该钩子将始终运行,这可能不是通用的最佳解决方案

我会建立一个小脚本,为我做到这一点

首先,您必须构建已修改文件的列表。这可以通过以下方式实现:

在哪里

  • $FROMREV
    是旧版本(即创建存档的最后一个版本)
  • $TOREV
    是新版本(即您要导出的当前状态)
  • filelist
    是一个临时文件,它将保存文件名,以便以后进行压缩
该文件列表可用于创建包含修改文件的存档:

git archive --format zip --output /full/path/to/archive.zip $TOREV $(cat filelist)
这指示git在目录
/full/path/to/
中创建名为
archive.zip的
zip存档。要压缩的版本是
$TOREV
。此外,并非所有文件都将被压缩,而仅压缩
文件列表
中包含的文件

或者,作为一个班轮:

git archive --format zip --output /full/path/to/archive.zip $TOREV $(git diff --name-only $FROMREV..$TOREV)

每当您认为应该导出某些内容并将其输入
FROMREV
TOREV
/full/path/to/archive.zip时,您都可以手动调用此脚本。非常感谢您,我会尝试一下
git archive --format zip --output /full/path/to/archive.zip $TOREV $(git diff --name-only $FROMREV..$TOREV)