Git别名优化问题:获取上游提交日期及去除时区格式
问题解答
1. 获取上游分支的提交日期
你当前的别名里两次调用的都是本地分支的committerdate,要获取上游分支的提交日期,需要给日期字段加上upstream:前缀。把格式串里第二个%(committerdate:iso-strict)替换成%(upstream:committerdate:iso-strict)即可。
修改后的完整别名代码:
branc = "!f() { git for-each-ref --sort=committerdate refs/heads/$@ --format='%(color:red)%(objectname:short=8)%(color:reset) %(color:yellow)%(refname:short)%(color:reset) %(color:cyan)%(upstream:strip=2)%(color:reset) %(color:green)%(upstream:track)%(color:reset) (%(color:yellow)%(committerdate:iso-strict)%(color:reset)/%(color:cyan)%(upstream:committerdate:iso-strict)%(color:reset))'; }; f"
修改后输出的第二个日期会变成上游分支的最后提交时间,能直接对比本地与上游的提交差异。
2. 移除日期中的时区信息
Git支持通过format:自定义日期格式,替代iso-strict。使用%Y-%m-%dT%H:%M:%S格式串就能输出不带时区的紧凑ISO格式(例如2022-01-26T14:07:21)。
同时解决两个问题的最终别名代码:
branc = "!f() { git for-each-ref --sort=committerdate refs/heads/$@ --format='%(color:red)%(objectname:short=8)%(color:reset) %(color:yellow)%(refname:short)%(color:reset) %(color:cyan)%(upstream:strip=2)%(color:reset) %(color:green)%(upstream:track)%(color:reset) (%(color:yellow)%(committerdate:format:%Y-%m-%dT%H:%M:%S)%(color:reset)/%(color:cyan)%(upstream:committerdate:format:%Y-%m-%dT%H:%M:%S)%(color:reset))'; }; f"
内容的提问来源于stack exchange,提问作者caduceus
相关产品推荐
相关产品推荐

