最近的项目中,团队使用GitHub来作为协作工具,但是由于每次或几次的修改文件需要替换到正式的环境中,而正式的环境中为了不影响系统的运行又没有安装GitHub,所以每次更新文件都要手动的一个一个去对比、替换,效率低下,而且还容易出现错误。
既然GitHub这么强大,那么有没有命令可以将某几次修改的文件自动按照路径打包呢?这样的话再去替换修改文件就十分的方便了,于是就是论坛和博客去寻找大佬们的方法。。。
找了很久发现大概有两个比较方法的方法都可以实现我们的需求:
第一种方法,git archive 命令,git中提供一个打包归档的命令就是archive,起初我们也是使用了这个,但是发现有点时候遇到删除文件的时候,该命令就会出错,于是就开始了第二次寻找之旅。。。
发现git diff 有一种方式也可以提供打包的功能,命令如下:
但是遇到删除文件的时候,还是会出现错误;经过仔细阅读文档之后,发现git diff命令可以通过增加–diff-filter命令来过滤文件变动方式,只操作自己需要的变动方式具体参数如下:
Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R)
上面几个分别对应的是,新增;复制;删除;修改;重命名
于是上面的打包命令可以变成
过滤掉删除的文件,这样就可以顺利的打包成功,再将压缩包复制到正式环境中进行替换就没有问题了
(PS:如果想打包到最近一次提交,将后面的commit-id换成HEAD即可)