git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Minor Bug in Renaming Branches

From
SLSamuel Lijin <samuel.lijin@formlabs.com>
Date
Jun 6, 2016, 17:52 UTC
Message-ID
<CA+wHs3MSax1eo9V_5hnsbEte0k5tX22dAgSUAEzN7aw22rUnhA@mail.gmail.com>
Hi,

Not quite sure where to submit bug reports about Git, this was the best I could find, so if there's a better place to do this, please let me know and I will.

The short of this issue is that on Mac and Windows, if a branch has a slash in its name, changing it from lowercase to uppercase requires diving into .git/refs/heads/ and manually moving stuff around - I think the behavior should be at least something like this: http://stackoverflow.com/questions/26810252/how-to-change-my-local-github-branch-name-to-uppercase.

It happens that on both Windows box, to rename a branch from
"branch/name" to "BRANCH/NAME", one has to actually dive into
.git/refs/heads/ because of how Windows handles upper/lowercase in
directory paths. (Win7, mingw64 via Git for Bash, git version
2.7.0.windows.1)
user@windows-box MINGW64 ~
$ mkdir sandbox && cd sandbox && git init
Initialized empty Git repository in C:/Users/user/sandbox/.git/
user@windows-box MINGW64 ~/sandbox (master)
$ touch empty.txt && git add empty.txt && git commit -m 'initialize repo'
[master (root-commit) 761113d] initialize repo
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 empty.txt
user@windows-box MINGW64 ~/sandbox (master)
$ git branch
* master
user@windows-box MINGW64 ~/sandbox (master)
$ git checkout -b branch/name
Switched to a new branch 'branch/name'
user@windows-box MINGW64 ~/sandbox (branch/name)
$ git branch
* branch/name
  master
user@windows-box MINGW64 ~/sandbox (branch/name)
$ git branch -m BRANCH/NAME
fatal: A branch named 'BRANCH/NAME' already exists.
user@windows-box MINGW64 ~/sandbox (branch/name)
$ git branch -m tmp
user@windows-box MINGW64 ~/sandbox (tmp)
$ git branch -m BRANCH/NAME
user@windows-box MINGW64 ~/sandbox (BRANCH/NAME)
$ git branch
  branch/NAME
  master
user@windows-box MINGW64 ~/sandbox (BRANCH/NAME)
$ mv .git/refs/heads/branch/ .git/refs/heads/BRANCH/
user@windows-box MINGW64 ~/sandbox (BRANCH/NAME)
$ git branch
* BRANCH/NAME
  master

Interestingly, from inside an Ubuntu VM (with the directory in question mounted as a VBox fileshare), this is not an issue.

A colleague on a Mac also reproduces the issue successfully (OSX 10.11.5, git 2.8.3):

mac-box:sandbox user$ touch empty.txt && git add empty.txt && git
commit -m 'initial commit'
[master (root-commit) 1f4f1fa] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 empty.txt
mac-box:sandbox user$ git branch
* master
mac-box:sandbox user$ git checkout -b branch/name
Switched to a new branch 'branch/name'
mac-box:sandbox user$ git branch -m BRANCH/NAME
fatal: A branch named 'BRANCH/NAME' already exists.
mac-box:sandbox user$ git branch
* branch/name
  master
mac-box:sandbox user$ git branch -m tmp
mac-box:sandbox user$ git branch
  master
* tmp
mac-box:sandbox user$ git branch -m BRANCH/NAME
mac-box:sandbox user$ git branch
  branch/NAME
  master
mac-box:sandbox user$ mv .git/refs/heads/branch/ .git/refs/heads/BRANCH/
mac-box:sandbox user$ git branch
* BRANCH/NAME
  master

Thanks, Sam

Next: Stefan Beller
Message 1 of 7 in “Minor Bug in Renaming Branches”
  1. Samuel LijinJun 6, 2016
  2. Stefan BellerJun 6, 2016
  3. Torsten BögershausenJun 6, 2016
  4. Stefan BellerJun 6, 2016
  5. Torsten BögershausenJun 7, 2016
  6. Eric DeplagneJun 7, 2016
  7. Stefan BellerJun 7, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.