Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
移动git头而不改变任何其他内容_Git_Git Reset - Fatal编程技术网

移动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没有执行检查,所以有点苛刻。如果您尝试这样做,请确保在备份之前进行备份。跳过了哪些检查以及这会如何导致问题?这只是创建了一个“头部分离”的场景,对吗?