移动 git HEAD 不改变任何其他东西

Move git HEAD without changing anything else

我想移动 HEAD,并且只移动那个。

这意味着我想保持原样:

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

有没有不创建新分支的方法?

您可以通过以下方式实现:

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

但不被鼓励。

使用 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 \"\" #" # 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