Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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 更新签出分支的ref时如何自动更新工作树_Git - Fatal编程技术网

Git 更新签出分支的ref时如何自动更新工作树

Git 更新签出分支的ref时如何自动更新工作树,git,Git,我已签出mk分行。现在我执行git获取origin以获取origin/mk分支。此分支已重新设置基础,我没有对其进行任何本地更改,因此我只想将本地mk分支指针移动到获取的远程分支,因此我执行以下操作: $ git update-ref -m "Updating mk to remote ..." refs/heads/mk refs/remotes/origin/mk 如show ref所示,该操作似乎成功: $ git show-ref mk a885dad11c37e5c03cc49377

我已签出
mk
分行。现在我执行
git获取origin
以获取
origin/mk
分支。此分支已重新设置基础,我没有对其进行任何本地更改,因此我只想将本地
mk
分支指针移动到获取的远程分支,因此我执行以下操作:

$ git update-ref -m "Updating mk to remote ..." refs/heads/mk refs/remotes/origin/mk
show ref
所示,该操作似乎成功:

$ git show-ref mk
a885dad11c37e5c03cc4937766d62e181984c1aa refs/heads/mk
a885dad11c37e5c03cc4937766d62e181984c1aa refs/remotes/origin/mk
但是,提交
a885dad
未签出到工作目录。为什么?它能自动签出吗?

注意,如“”中所述,一个简单的
git fetch-u origin mk:mk
也会这样做(用于快速向前合并)

问题是:这些命令是否在更新头部

在这种情况下,需要一个单独的
git update ref-m“update mk to remote…”HEAD refs/heads/mk

但使用中的
-u
也应允许更新头部:

-u
--update-head-ok
默认情况下,
git fetch
拒绝更新与当前分支对应的头。此标志将禁用检查。
这纯粹是用于与git fetch进行通信的内部使用,除非您实现自己的瓷器,否则不应该使用它

请注意,这些命令不会更新工作树。

您仍然需要单独的
git签出--.

谢谢!我不太明白为什么在我的情况下需要更新
HEAD
:因为
mk
已签出
HEAD
指向它。我还试图查找这个特殊的结构
git checkout--.
但找不到-你能告诉我在哪里可以读到它吗(我想它类似于
reset--hard HEAD
)?我会的,我2点后回家hours@Maximus事实上是类似的:我通常使用git签出,因为我有内容过滤器驱动程序(,like),它们由签出()触发.在你的案例中,一个
git重置--hard
就足够了。明白了,非常感谢!你能对这个问题发表意见吗?我不太明白为什么我需要在我的案例中更新HEAD:既然mk已经被签出,HEAD已经指向它了?我想你可能不是特别谈论我的案例,而是关于g中的
update ref
一般来说,它不会更新HEAD,对吗?@Maximus是的,对。在您的情况下,HEAD已经是您分支的一个符号引用()