我有一个分支设置来跟踪ref in origin. git checkout <branchname>切换到那个分支,一个git status将显示我的分支从原点到前方或后方的距离,但我origin/HEAD仍然感到惊讶,仍然指向origin/master,而不是origin/<branchname>
所以我的问题是,在什么情况下起源/ HEAD会被移动?
编辑:
我很欣赏有关如何移动origin/HEAD 的答案,但我对"有机"移动它感兴趣,除了明确告诉它这样做之外.
例如,当我切换分支时,git使HEAD指向我正在检出的分支,所以我很惊讶origin/HEAD不会以相同的方式移动.
我不明白输出中的第二行git branch -l -a:remotes/origin/HEAD -> origin/master.
git branch -l -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
这是另一种手术的遗留物吗?我应该把它清理干净吗?那我该怎么办?
通常我在cli上使用git,但是在我尝试的本地存储库中TortoiseGit为朋友找到一个简单的git工作流程.
我过去git diff origin经常使用.
在不同的环境中,它不起作用.我不知道为什么.
user@host> git diff origin
fatal: ambiguous argument 'origin': unknown revision or path
not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Run Code Online (Sandbox Code Playgroud)
状态:
user@host> git status
On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
遥控器:
user@host> git remote -v
origin https://example.com/repos/djangotools (fetch)
origin https://example.com/repos/djangotools (push)
Run Code Online (Sandbox Code Playgroud)
版:
user@host> git --version
git version 2.7.4
Run Code Online (Sandbox Code Playgroud)
用"git版本1.8.1.4" git diff origin工作.
顺便说一句,如果我使用"git diff origin/master",我会看到相同的错误信息
BTW2,我认为"/ master"是多余的.理所当然的默认设置是将本地分支与远程站点上的同一分支进行比较.
我想知道HEAD裸存储库的目的是什么?它是否仅在克隆存储库时才使用,以了解在克隆存储库中要检出的分支?
请注意,这个问题不是关于what is HEAD,但考虑到它的功能,我想知道为什么在bare存储库中需要它.
请帮助让头指向git中的主人

我试过了
git rebase HEAD master
Run Code Online (Sandbox Code Playgroud)
和
git checkout master
Run Code Online (Sandbox Code Playgroud)
没有任何帮助.
更新:奇怪我试过:
git symbolic-ref HEAD
refs/heads/master
Run Code Online (Sandbox Code Playgroud)
然后
git rev-parse refs/heads/master
fc550e5ff2fe49d64ee1d8bf0da09b2b24bf2cd7
Run Code Online (Sandbox Code Playgroud)
然后我在以下命令后发出奇怪的警告
git rev-parse HEAD
warning: refname 'HEAD' is ambiguous.
fc550e5ff2fe49d64ee1d8bf0da09b2b24bf2cd7
Run Code Online (Sandbox Code Playgroud)
新更新:遥控器中有HEAD分支 - >原点.删除后一切都还可以.我不再有那个警告了.
我做了一个简单的事git reflog,这是我得到的前几行:
column1 Column2 Column3
2797a1d4 (HEAD -> master, upstream/master) HEAD@{0}: checkout: moving from master to master
2797a1d4 (HEAD -> master, upstream/master) HEAD@{1}: pull upstream master: Fast-forward
a461a29f HEAD@{2}: checkout: moving from master to master
a461a29f HEAD@{3}: reset: moving to HEAD
a461a29f HEAD@{4}: pull upstream master: Fast-forward
784f2cp3 (yy, alphabets, hotFix) HEAD@{5}: checkout: moving from yy to master
784f2cp3 (yy, alphabets, hotFix) HEAD@{6}: checkout: moving from master to yy
784f2cp3 (yy, alphabets, hotFix) HEAD@{7}: checkout: moving from alphabets …Run Code Online (Sandbox Code Playgroud) >git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
它们是否相同,如果是,那么为什么我们有两个.