Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用git生成要通过FTP上载的文件夹_Php_Git - Fatal编程技术网

Php 使用git生成要通过FTP上载的文件夹

Php 使用git生成要通过FTP上载的文件夹,php,git,Php,Git,我有一个PHP项目(一个wordpress插件)。当我需要将此项目发布到远程测试或生产服务器时,我必须通过通用FTP发送文件。为了不上传所有文件,我只想从上一次构建中获得修改过的文件 有没有一种方法可以使用GIT,在给定两个不同的分支或提交的情况下,使用在这两个分支/提交之间更改或添加的文件创建一个文件夹。这将给我所有的文件,我必须上传 我尝试过使用git diff branch1..branch2>result.diff,但这会给我一个包含所有更改的文本文件,这对FTP上载过程没有帮助,我想按

我有一个PHP项目(一个wordpress插件)。当我需要将此项目发布到远程测试或生产服务器时,我必须通过通用FTP发送文件。为了不上传所有文件,我只想从上一次构建中获得修改过的文件

有没有一种方法可以使用GIT,在给定两个不同的分支或提交的情况下,使用在这两个分支/提交之间更改或添加的文件创建一个文件夹。这将给我所有的文件,我必须上传

我尝试过使用
git diff branch1..branch2>result.diff
,但这会给我一个包含所有更改的文本文件,这对FTP上载过程没有帮助,我想按照相同的文件夹结构将所有更改/添加的文件复制到一个文件夹中,这样我就可以上载这个文件夹了

编辑: 基于@LeGEC answer,我编写了一个小的命令行实用程序,用于读取gitDiff的结果并生成一个包含这些文件的文件夹。如果有人感兴趣,请访问GitHub:

您可以尝试以下方法之一:

git diff --name-only
git diff --name-status
看看哪一个最适合你的需要


git diff
还有一个
--diff filter
选项,在这种情况下,您可能希望将该选项与
--no renames
组合使用,以便重命名的文件正确显示在“deleted”列表中:


git diff--stat
将显示已更改文件的列表。从分支(工作目录)复制它们并按您的意愿共享。这是否回答了您的问题?
# list the files whose content has been modified, and should be copied :
git diff --no-renames --name-only --diff-filter=ACM

# list the files that have been deleted from the repo, and should be *removed* :
git diff --no-renames --name-only --diff-filter=D