<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[Git如何获得两个版本间所有变更的文件列表,git获得两个版本间所有（增加/修改/删除）的文件列表，应该使用什么命令呢？]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[版本控制]]></category>
<pubDate>Wed, 28 Jun 2017 00:32:40 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：用了SVN的同志老想着把Git当SVN用（如新加了几个文件，就从SVN里找出来，再拷贝到测试环境，这种事情，Git直接以灵活的版本机制想去哪个版本就去哪个版本。），但也提供了查看某个版本到哪个版本修改了哪些文件的一个命令行。<br/>在测试环境想切换到某个版本就直接用命令就能过去了，什么，测试不会用Git.....。<br/><br/><textarea name="code" class="php" rows="15" cols="100">
git diff --name-status HEAD^ HEAD~2
</textarea><br/><br/>From:https://segmentfault.com/q/1010000000133613<br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------<br/>Git 的每个提交都有一个 SHA1 散列值（Hash 值）作为 ID。我们可以在 checkout 命令中使用这些 ID 作为起点。比如：<br/>git checkout -b name-of-new-branch 169d2dc<br/>这样，Git 的活动分支会切换到 name-of-new-branch 这个分支上，而它的内容与 169d2dc 这个分支一致。<br/>注意：SHA1 的散列值有 40 个字母，相当长。所以 Git 允许我们在不引起歧义的情况下，使用散列值的前几位作为缩写。<br/><br/><br/>一、查看某个提交到某个提交之前的文件名：<br/>git diff --name-status HEAD~2 HEAD~3<br/>git diff hash1 hash1 --stat<br/>如果是branch的话<br/>git diff branch1 branch2 --stat<br/>加上 --stat 是显示文件列表, 否则是文件内容diff<br/>git diff &lt;commit&gt; &lt;commit&gt;<br/>上面的 &lt;commit&gt; 表示提交生成的 hash 串, 例如：<br/>git diff b45ba47d1b297217e3ec6a3ab0f61716a8d6ecbc c244d0bf06d56ec86aaedeefa5dcd84dd9febc60<br/>一般来说，通过 hash 串的前 4～6 位就可以区分，所示可以简写为：<br/>git diff b45b 355e<br/><br/><textarea name="code" class="php" rows="15" cols="100">
列出较为详细的修改情况：
$git diff --stat HEAD~2 HEAD~3
 playbook/jackxiang.com/web.yml &#124;&nbsp;&nbsp;&nbsp;&nbsp;2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
只列出文件名列表简单修改：
$git diff --name-status HEAD~2 HEAD~3
M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; playbook/jackxiang.com/web.yml

</textarea><br/><br/>第二步就是对上面的文件列表，进行按自己修改了哪些文件进行修改Checkout出来可上到测试环境：<br/><br/>二、提交的某个版本给Checkout出来：<br/>大多数时候，我们可能只需要对某一个文件做细小的修补，因此只 checkout 该文件就行了，并不需要操作整个 commit 或分支。<br/>上一节我们介绍了如何将某个历史版本完整地 checkout 到工作区。实际上，我们只需要在上一节的命令之后加上需要 checkout 的文件即可。<br/>git checkout &lt;sha1-of-a-commit&gt; &lt;/path/to/your/file&gt;<br/>当然，有时候你需要将某个文件的历史版本 checkout 出来，并以一个新的名字保存。这时候可以这么做：<br/>git checkout &lt;sha1-of-a-commit&gt;:&lt;/path/to/your/file&gt; &lt;/new/name/of/the/file&gt;<br/><textarea name="code" class="php" rows="15" cols="100">
git checkout d9999af8062507d3d4e33063e12886d4073bf632 ../deploy/jackxiang.com/master.yml
</textarea>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Git如何获得两个版本间所有变更的文件列表,git获得两个版本间所有（增加/修改/删除）的文件列表，应该使用什么命令呢？]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>