通过命令:
$git diff --name-status tag1 tag2 -- target-src输出如下:
M src/config.h
M src/createTable.sql
A src/gameserver/BattleGround_10v10.h
M src/gameserver/CMakeLists.txt
M src/gameserver/achieve.cpp
M src/gameserver/achieve.h
A src/gameserver/action.cpp
A src/gameserver/action.h
A src/gameserver/activity.cpp
A src/gameserver/activity.h
M src/gameserver/admin.cpp我得到了两个标签之间修改过的文件。但我要按预定时间点单。我怎么能这么做?
感谢ilius's answer,我为我的请求添加了awk:
git diff --name-status tag1 tag2 | while read line ; do
status=${line:0:1}
path=${line:2}
date=$(git log -1 '--pretty=format:%ci' -- "$path")
echo "$date $status $path"
done | sort -r | awk '{print $4" "$5}'但我觉得太复杂了。能简单点吗?
发布于 2013-08-23 10:53:36
git log --name-status '--pretty=format:' tag1 tag2 -- target-src | grep -vxh '\s*'给出一个清晰的输出。
还可以尝试以下脚本:
git diff --name-status tag1 tag2 | while read line ; do
status=${line:0:1}
path=${line:2}
date=$(git log -1 '--pretty=format:%ci' -- "$path")
echo "$date $status $path"
done | sort -r稍后您可以删除日期(用于排序),我认为日期是有用的。
您还可以从-r中删除sort选项,如果您希望旧的已更改的文件位于顶部。
发布于 2013-08-23 10:25:44
您可以尝试同样的方法,但是使用git log
git log --name-status tag1 tag2 -- target-src这样,文件按照提交的顺序排序。此外,git log有各种排序选项,您可以尝试。
https://stackoverflow.com/questions/18400336
复制相似问题