Git推送源磁头在ubuntu 18.04上不工作

Git推送源磁头在ubuntu 18.04上不工作,git,ubuntu,ubuntu-18.04,Git,Ubuntu,Ubuntu 18.04,所以我是一个Windows10用户,我与很多分支机构合作。每次我需要在分支中进行推送时,我都会使用git推送原点头 两天前,我决定尝试一下ubuntu,我很喜欢使用它。唯一的问题是git-push-origin头不再工作了,每次我想推到一个分支时,我都必须使用git-push-origin和该分支名称 这有什么原因吗?这还不是世界末日,但我真的很怀念使用head而不是键入分支名称的做法,总是用大写字母书写head。Git特别对待这个特殊的名称。它不专门处理小写的头 在某些机器上使用小写有时有效。

所以我是一个Windows10用户,我与很多分支机构合作。每次我需要在分支中进行推送时,我都会使用git推送原点头

两天前,我决定尝试一下ubuntu,我很喜欢使用它。唯一的问题是git-push-origin头不再工作了,每次我想推到一个分支时,我都必须使用git-push-origin和该分支名称


这有什么原因吗?这还不是世界末日,但我真的很怀念使用head而不是键入分支名称的做法,总是用大写字母书写
head
。Git特别对待这个特殊的名称。它不专门处理小写的

在某些机器上使用小写有时有效。特别是,它通常在Windows和MacOS上工作。。。有时候。但是如果您使用git worktree add并在添加的工作树中工作,它也会停止在Windows和MacOS上工作

如果你不喜欢把Shift键放下来那么久,考虑使用<代码> @ /Cord>拼写这个神奇的名字。< /P> 为什么

head
(小写)有时有效,但并不总是有效 Git当前将头信息(当前分支的名称)存储在名为
.Git/HEAD
的文件中,但在添加的工作树中除外,它将(每个添加的工作树)头信息存储在
.Git
子文件夹中的文件中

当您使用所有大写字母编写
HEAD
时,Git知道在适当的文件中查找
HEAD
信息,无论是
.Git/HEAD
还是
.Git/worktrees/../HEAD
或其他任何文件。所以它直接指向正确的信息

但是,当您以小写形式编写
head
时,Git会尝试将其用作标记名(
refs/tags/head
),或分支名(
refs/heads/head
),或远程跟踪名,如
refs/remotes/origin/head
)。这个测试有点区分大小写,因为Git在两个地方存储分支、标记和远程跟踪名称:

  • 它们可能位于名为
    .git/packed refs
    的纯文本文件中,和/或
  • 它们可以存储在文件系统中的普通文件中,位于
    .git/refs/
    下,例如
    。git/refs/tags/head
    将保存与名为
    head
    的标记相关联的哈希ID
.git/packed refs
中的查找直接由git本身完成,并且区分大小写。
.git/refs/
中的查找由操作系统完成。
操作系统的查找可能不区分大小写,具体取决于使用的操作系统和文件系统

当然,您可能没有名为
head
的标记或分支。您的遥控器可能有一个名为
HEAD
的符号引用,但在Git找到这些符号引用之前,Git还尝试查找
.Git
中的普通纯文本文件,以查看是否有任何符号引用被命名为
HEAD
。此测试再次由操作系统完成


如果您的操作系统和文件系统组合不区分大小写,那么打开并读取名为
head
的文件的请求就会打开并读取明显完全不相关的文件,那么您是用小写写
head
还是用大写写
head
?我是用小写写的,这就是问题所在。torek的评论修复了它,谢谢!