移动git HEAD而不更改任何其他内容

时间:2016-09-19 09:34:23

标签: git git-reset

我想移动HEAD,只能这样做。

这意味着我想保持不变:

  • 索引(a.k.a.缓存/暂存区域)
  • 工作树
  • 提交当前分支参考点

git reset --soft执行前两个,但不是最后两个。

有没有办法在不创建新分支的情况下执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式实现此目的:

echo $(git rev-parse $commit) > $(git rev-parse --git-dir)/HEAD

但是气馁。

答案 1 :(得分:1)

使用git管道命令update-ref

git update-ref --no-deref HEAD $hash

$hash可以是SHA1,哈希短格式(例如1c93),标记或引用)

reflog中留下有关更改内容的消息是礼貌的。为此,请创建别名:

head = "!p=\"$(git log -n1 --oneline --decorate)\" && git update-ref --no-deref -m \"Move HEAD from $p\" HEAD \"$1\" #" # Move HEAD to specified commit-ish

然后当你:

git head 1c93

reflog将包含以下内容:

  

1c93601 HEAD@{0}: Move HEAD from fd88175 (HEAD -> master, tag: oldhead, origin/master) Add diff-highlight and icdiff