移动git头而不改变任何其他内容
我想移动移动git头而不改变任何其他内容,git,git-reset,Git,Git Reset,我想移动头部,并且仅此而已 这意味着我想保持原样: 索引(又称缓存/暂存区) 工作树 提交当前分支引用所指向的分支 git reset--soft执行前两项,但不执行最后一项 有没有办法在不创建新分支的情况下执行此操作?您可以通过执行以下操作来实现此目的: echo $(git rev-parse $commit) > $(git rev-parse --git-dir)/HEAD 但是不鼓励这样做。使用git管道命令updateref: git update ref——无数据头$h
头部
,并且仅此而已
这意味着我想保持原样:
- 索引(又称缓存/暂存区)
- 工作树
- 提交当前分支引用所指向的分支
git reset--soft
执行前两项,但不执行最后一项
有没有办法在不创建新分支的情况下执行此操作?您可以通过执行以下操作来实现此目的:
echo $(git rev-parse $commit) > $(git rev-parse --git-dir)/HEAD
但是不鼓励这样做。使用
git
管道命令updateref
:
git update ref——无数据头$hash
($hash
可以是SHA1、hash缩写(例如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头1c93
reflog
将包含以下内容:
1c93601磁头@{0}:从fd88175移动磁头(磁头->主控,标记:oldhead,原点/主控)添加差异高亮显示和icdiff
你试过你的第一个建议了吗?它为我移动分支引用。为什么不鼓励使用第二种形式?@TomHale因为git没有执行检查,所以有点苛刻。如果您尝试这样做,请确保在备份之前进行备份。跳过了哪些检查以及这会如何导致问题?这只是创建了一个“头部分离”的场景,对吗?