git取两次提交的文件列表,包含目录信息
Posted 众生皆苦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git取两次提交的文件列表,包含目录信息相关的知识,希望对你有一定的参考价值。
1.用git rev-list HEAD取得版本号列表:
在SmartGit中看到的也是这样,验证了我们的猜想:
取到两个版本号之后,用git diff命令:git diff [--options] <commit>...<commit> [--] [<path>…]
这里的[-options]我们填的是--name-status,<commit>指的是版本号,也就是每次版本的散列值,可以填前几位就可以了,git会自动识别。
--name-status选项,可以输出每个修改的文件的状态,添加,修改,删除还是重命名等。
输入命令git diff --help可以查看帮助文档:
--name-status
Show only names and status of changed files. See the description of the --diff-filter option on what the status letters mean.
--diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]] Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, …) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
其中M和1.txt之间是\\t,后面的是目录和文件,如果是在ubuntu下的话,比如修改了文件夹aa下的my.txt
则:
M\\taa/my.txt
因为linux上的文件夹目录都是/,windows的,没有测试有需要的可以测试。
如何要输出到文件中:
// >> 后加输出文件的路径、文件名和后缀名 git diff [branchA] [branchB] >>d:/diff/exportname.diff
linux的重定向命令 覆盖 git diff [branchA] [branchB] > a.txt 追加 git diff [branchA] [branchB] >> a.txt
参考:https://segmentfault.com/q/1010000005033288
命令的具体参考帮助文档:git diff --help
用git show命令也可以:
git show会在下面包含每个文件的对比信息(内容),这将会是大量字符串。
具体如果有目录下的文件不能显示区别,则两个命令的差异实践几次就会发现,可以解决问题的。
以上是关于git取两次提交的文件列表,包含目录信息的主要内容,如果未能解决你的问题,请参考以下文章