Git 作为头签出到本地分支

Git 作为头签出到本地分支,git,Git,我试图以git认为其分离的方式签出git分支的最新提交。我无法签出到分支本身,因为a阻止了此交互,并使用-f绕过此操作 $ mkdir temp1 $ cd temp1 $ git init $ echo a > test.txt $ git add test.txt $ git commit -m "Initial commit" $ git worktree add ../temp2 --no-checkout $ cd ../temp2 $ git checkout master f

我试图以git认为其分离的方式签出git分支的最新提交。我无法签出到分支本身,因为a阻止了此交互,并使用
-f
绕过此操作

$ mkdir temp1
$ cd temp1
$ git init
$ echo a > test.txt
$ git add test.txt
$ git commit -m "Initial commit"
$ git worktree add ../temp2 --no-checkout
$ cd ../temp2
$ git checkout master
fatal: 'master' is already checked out at '../temp1'
在“temp2”存储库中,我可以使用散列(git checkout 392847)手动签出提交,我希望不必键入
git log
,复制id,然后将其粘贴到git checkout命令行中,就能自动执行此操作

我想要的示例:(类似于包含推式工作的存储库的
git checkout origin/master
):

$git签出主机
注意:正在签出“/master”。
你处于“超脱的头部”状态。你可以四处看看,做实验
更改并提交它们,您可以放弃在此过程中所做的任何提交
通过执行另一个签出,在不影响任何分支的情况下进行状态设置。
如果要创建新分支以保留创建的提交,可以
再次将-b与checkout命令一起使用(现在或以后)。例子:
git签出-b
那么:

$ git checkout --detach master
这将有效地解决主分支的commit SHA1,然后将其作为分离头进行检查。做同样事情的替代方法是
git checkout$(git rev parse master)
,或者更短的
git checkout master ^0


或者,您可以始终创建指向相同提交的新分支(
git checkout-b master copy master
),或者使用完整克隆(
git clone temp1 temp2
)。

最简单的方法是
git checkout——分离适用于我的master,而且对于一个shell函数/自定义git函数来说足够短,在接受之前我将等待大约1天,让其他人提出他们的解决方案看起来现在还有
git checkout--detach master
,这对你有用吗?
--detach
对我也有用,从来都不知道存在的
——分离
已经并且可能是一条路要走。请注意,您也可以使用
^0
语法,这比扩展
git rev parse
的输出要短一些;创建一个完整的克隆可能不是,因为这意味着创建一个不必要的db和REF副本,然后可能会失去同步。
$ git checkout --detach master