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