我有别名:
git rebase --interactive --autostash --autosquash HEAD~20
这很好用,除非当我在少于20次提交的新存储库中工作时,在这种情况下,我收到消息:
fatal: Needed a single revision
invalid upstream 'HEAD~20'
我怎么说:HEAD~20 or else the earliest commit
?
答案 0 :(得分:2)
我可能会(以bash方式)做$( git log -n 20 --pretty="%h" --first-parent | tail -n 1 )
。因此,例如....
git checkout $( git log -n 20 --pretty="%h" --first-parent | tail -n 1 )
调整您的食谱。
答案 1 :(得分:0)
基于eftshift0's answer,我想到了以下别名:
# Print the $1-th first-parent of commit $2
# or the earliest existing commit if the beginning of history is reached
parent = !"[ \"${1:-1}\" -eq \"${1:-1}\" ] && c=$(git rev-parse \"${2:-@}\") && git log -n\"$(expr \"${1:-1}\" + 1)\" --first-parent --pretty=\"%H\" --reverse \"$c\" | head -n1 #"
它带有两个可选参数:
$1
-有多少父母可以回去。默认为1
或直接父级$2
-要执行的提交操作,默认为HEAD
如果请求第0个父对象,则返回提交本身(或HEAD)。
这在我的rebase --interactive
别名中使用:
rbi = !"git rebase --interactive --autostash --autosquash --root \"$(git rev-parse \"${1:-$(git parent 50)}\")\" #"