通过命令:
$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的回答我为我的请求添加了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}'
但我认为这太复杂了,更简单了吗?非常感谢。
答案 0 :(得分:0)
您可以使用git log
尝试相同的事情:
git log --name-status tag1 tag2 -- target-src
这样,文件按提交的顺序排序。此外,git log
还有各种各样的排序选项。
答案 1 :(得分:0)
使用mart1n的想法:
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
选项