如何从git日志输出中获取特定的SHA

时间:2011-09-22 18:38:11

标签: git import cygwin logging sha

执行以下命令git log --before "Feb 01 2011"将返回指定日期之前的所有提交,包括其SHA 我正在尝试编写一个cygwin脚本,它将我的头部同步到特定月份的最后一次提交,而我不必自己找到并输入SHA。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

只需使用与传递到日志相同的选项rev-list,再加-n 1即可返回第一个选项。

sha1=$(git rev-list --before "Feb 01 2011" -n 1 HEAD)

答案 1 :(得分:0)

在bash on linux上有以下工作,我认为它也适用于cygwin:

git checkout $(git log --before='Feb 01 2011' -n1 | head -n 1 |sed s/commit\ //)

当你这样做时立即创建分支可能是个好主意

git checkout $(git log --before='Feb 01 2011' -n1 | head -n 1 |sed s/commit\ //) -b 2011-02

或者,如果您打算创建脚本标记可能是更好的选择。例如:

git checkout $(git log --before='Feb 01 2011' -n1 | head -n 1 |sed s/commit\ //)
git tag 2011-01