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

iamued · 2013年11月26日 · 最后由 loveky 回复于 2013年11月26日 · 5863 次阅读

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

考虑是这样

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 获取到最新代码,按照依赖配置设置环境

需要 登录 后方可回复, 如果你还没有账号请 注册新账号