void.pointer
void.pointer

Reputation: 26405

Is HEAD in git case insensitive on all platforms?

Using msysgit on Windows, I can do this:

git checkout head

or

git checkout HEAD

Either works. I don't have a linux environment to test on, but I'm just curious: is HEAD case insensitive by design? Is it this way on all platforms?

Upvotes: 11

Views: 1571

Answers (4)

palazzo train
palazzo train

Reputation: 3409

The case-sensitivity of HEAD is depending on the case-sensitivity of file system of the OS.

When you checkout HEAD, git actually looks for a file named "HEAD" under the folder .git. If you type HEAD in small letters, git looks for the file name with small letters. You can see the .git/HEAD file actually contains the hash code of the commit HEAD pointing to.

Because of this, the typical case-sensitivities of HEAD are:

  • Case-sensitive on Linux
  • Case-insensitive on Windows, MacOS

Upvotes: 12

Chris
Chris

Reputation: 137096

HEAD is case-sensitive on Linux.

For example:

$ git checkout head
error: pathspec 'head' did not match any file(s) known to git.
$ git checkout HEAD
Your branch is up-to-date with 'origin/master'.

Git version 1.9.1 on Ubuntu 14.04.

Upvotes: 13

Lorenzo Marcon
Lorenzo Marcon

Reputation: 8179

Answering to cover Mac OSX (Mavericks):

$ git checkout HEAD
Your branch is up-to-date with 'origin/master'.

but:

$ git checkout head
Note: checking out 'head'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at f44b740... fix if endScreen(s) not present

By the way, that hash is the head of the current branch (in my test, the same has contained in .git/refs/heads/master)

Interesting behaviour.

(git 1.8.5.2)

Upvotes: 2

Mudassir Razvi
Mudassir Razvi

Reputation: 1833

HEAD is case sensitive in Linux environment. As far as I know its case insensitive only in mysysgit.

In Linux environment it gives : error: pathspec 'head' did not match any file(s) known to git.

Upvotes: 1

Related Questions