我正在查看我最近的两个变更集:
$ git log --oneline
123798 most recent stuff
349873 earlier changes
...
目前,我处于'最近的东西'变更集。我想要做的是让HEAD指针停留在这个变更集上,但让文件看起来好像我在'之前的变化'。排序与git reset --soft
相反,HEAD指针移动但文件不会改变。
修改
我发现的作品是
$ git checkout 349873
$ git reset --soft 123798
$ git reset HEAD
所以这描述了我想要发生的事情。但我想知道是否有更简洁的方法来做到这一点?
答案 0 :(得分:2)
git update-ref HEAD <desired-SHA>
这不会触及您的工作副本。
答案 1 :(得分:1)
我不知道更短的方法,但是:
if current=$(git symbolic-ref HEAD); then
git checkout $@
git symbolic-ref HEAD $current
fi
将这个技巧作为shell脚本。 (这当然是一件不寻常的事情...)你会从checkout命令得到通常的“分离的HEAD”消息,然后尝试回到你开始的任何分支都会抱怨你已经在它,即使你不是。
(以上假设您处于某个分支的顶端,并希望留在那里。如果您已经处于detached HEAD
状态,它会抱怨没有符号参考。使用rev=$(git rev-parse HEAD)
而是找到HE HEAD是什么,然后使用git update-ref HEAD $rev
返回那里。)