标题:Git如何获得两个版本间所有变更的文件列表,git获得两个版本间所有(增加/修改/删除)的文件列表,应该使用什么命令呢? 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Wed, 28 Jun 2017 08:32:40 +0000 作者:jackxiang 地址:http://jackxiang.com/post/9308/ 内容: 背景:用了SVN的同志老想着把Git当SVN用(如新加了几个文件,就从SVN里找出来,再拷贝到测试环境,这种事情,Git直接以灵活的版本机制想去哪个版本就去哪个版本。),但也提供了查看某个版本到哪个版本修改了哪些文件的一个命令行。 在测试环境想切换到某个版本就直接用命令就能过去了,什么,测试不会用Git.....。 git diff --name-status HEAD^ HEAD~2 From:https://segmentfault.com/q/1010000000133613 -------------------------------------------------------------------------------------------------------------------------------------------------------------- Git 的每个提交都有一个 SHA1 散列值(Hash 值)作为 ID。我们可以在 checkout 命令中使用这些 ID 作为起点。比如: git checkout -b name-of-new-branch 169d2dc 这样,Git 的活动分支会切换到 name-of-new-branch 这个分支上,而它的内容与 169d2dc 这个分支一致。 注意:SHA1 的散列值有 40 个字母,相当长。所以 Git 允许我们在不引起歧义的情况下,使用散列值的前几位作为缩写。 一、查看某个提交到某个提交之前的文件名: git diff --name-status HEAD~2 HEAD~3 git diff hash1 hash1 --stat 如果是branch的话 git diff branch1 branch2 --stat 加上 --stat 是显示文件列表, 否则是文件内容diff git diff 上面的 表示提交生成的 hash 串, 例如: git diff b45ba47d1b297217e3ec6a3ab0f61716a8d6ecbc c244d0bf06d56ec86aaedeefa5dcd84dd9febc60 一般来说,通过 hash 串的前 4~6 位就可以区分,所示可以简写为: git diff b45b 355e 列出较为详细的修改情况: $git diff --stat HEAD~2 HEAD~3 playbook/jackxiang.com/web.yml | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) 只列出文件名列表简单修改: $git diff --name-status HEAD~2 HEAD~3 M playbook/jackxiang.com/web.yml 第二步就是对上面的文件列表,进行按自己修改了哪些文件进行修改Checkout出来可上到测试环境: 二、提交的某个版本给Checkout出来: 大多数时候,我们可能只需要对某一个文件做细小的修补,因此只 checkout 该文件就行了,并不需要操作整个 commit 或分支。 上一节我们介绍了如何将某个历史版本完整地 checkout 到工作区。实际上,我们只需要在上一节的命令之后加上需要 checkout 的文件即可。 git checkout 当然,有时候你需要将某个文件的历史版本 checkout 出来,并以一个新的名字保存。这时候可以这么做: git checkout : git checkout d9999af8062507d3d4e33063e12886d4073bf632 ../deploy/jackxiang.com/master.yml Generated by Jackxiang's Bo-blog 2.1.1 Release