Git 如何查看两次 commit 间的文件差异列表

iamued · November 26, 2013 · Last by loveky replied at November 26, 2013 · 5857 hits

是这样,目前想实现的是增量部署

考虑是这样

server 上面保存一下当前的 repo 版本号 比如 repoversion.txt

然后在需要部署的时候

用最新的 master 分支 比较 server 上面的 repoversion 得到一个 filelist(包含新增的文件、修改的文件、和删除的文件)

然后用脚本来对这个 filelist 进行增量部署 该删的删、该覆盖的覆盖~

目前卡在了 如何获得两次 repoversion 之间的 文件差异 list 上~

求助啊

git whatchanged COMMIT-A..COMMIT-B

#1 楼 @HungYuHei 貌似不行啊 愁~

git diff --name-only 然后 巴拉巴拉吧

git diff --name-status <sha1> <sha2> > /path/to/my/file

效果

M       app/models/order.rb
D       config/routes.rb

为啥非要做 git 自己就可以做的事情呢

#5 楼 @loveky LZ 说了要做增量部署。很可能被部署的环境并没有安装 git。所以他希望提供一个增量包来搞。

#6 楼 @Victor 额,没有 git 可以安装一个吧,这好像也不是太复杂,能通过简单方式实现就没必要搞得那么复杂,diff 出来了还要打包传上去,在分别处理 add,modify,delete...

当然,不排除极端情况 LZ 的环境极其复杂就是不能用 git,所以想问一下应用场景

#4 楼 @Victor 谢谢 我先试试这个方法

#7 楼 @loveky 是这样的,不是新的应用,线上的环境相对复杂,目前通过 git 维护的只是部分文件,所以不能够通过 git 完全的 clone 或 pull~ 所以选择增量部署(部分文件),大概的应用场景是这样

#8 楼 @iamued 明白了。

那你们可以考虑将 git 以外的文件也通过 git 管理,这样统一管理不容易遗漏。如果额外的文件是 binary 这种不适合加入 git 的类型,则可以考虑在 git repo 中添加配置文件记录这些外部依赖的版本,位置信息。等部署时就可以 git 获取到最新代码,按照依赖配置设置环境

You need to Sign in before reply, if you don't have an account, please Sign up first.