【发布时间】:2016-09-19 09:34:22
【问题描述】:
我想移动HEAD,但只能这样做。
这意味着我想保持原样:
- 索引(也称为缓存/暂存区)
- 工作树
- 当前分支引用指向的提交
git reset --soft 执行前两个,但不是最后一个。
有没有办法在不创建新分支的情况下做到这一点?
【问题讨论】:
我想移动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 \"$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
【讨论】: