threads / discuss / 34328

git fetch --prune removes branches from origin/ with inconsistent case in path names

Subject: git fetch --prune removes branches from origin/ with inconsistent case in path names

## tl;dr

2 messages between Jul 2, 2013 and Mar 30, 2015.

replies: 1people: 2as markdown or json

Lee Winder· Jul 2, 2013, 20:37 UTC · lore

When using git fetch --prune, git will remove any branches from remotes/origin/ that have inconsistent case in folder names.

This issue has been verified in versions 1.7.10.2, 1.7.11.1 and 1.8.3.2.

I've described the reproduction steps here as I carried them out, and listed the plaforms I used to replicate it. The issue will most likely occur on a different combination of platforms also.

- On Mac, create a new repository and push a master branch to a central server
- On Mac, create a branch called feature/lower_case_branch and push
this to the central server (note that 'feature' is all lower case)
- On Windows, clone the repository but stay on master, do not checkout
the feature/lower_case_branch branch
- On Windows, branch from master a branch called
Feature/upper_case_branch (note the uppercase F) and push to the
server
- On Mac, run git fetch and see that
remote/origin/Feature/upper_case_branch is updated
Couple of things to note here
1) In the git fetch output it lists the branch with an upper case 'F'
  * [new branch]      Feature/upper_case_branch ->
origin/Feature/upper_case_branch
2) When I run git branch --all it is actually listed with a lower case 'f'
  remotes/origin/feature/upper_case_branch
Now the problem happens when I run git fetch --prune, I get the following output
  * [new branch]      Feature/upper_case_branch ->
origin/Feature/upper_case_branch
  x [deleted]         (none)     -> origin/feature/upper_case_branch
Note the new branch uses 'F' and the deleted branch uses 'f'.
The results of this bug seem to be
* Everytime I call git fetch it thinks Feature/upper_case_branch is a
new branch (if I call 'git branch' multiple times I always get the
[new branch] output)
* Whenever I run with --prune, git will *always* remove the branch
with a different folder name (from a case sensitive perspective) than
the one originally created on the current machine.

Thanks Lee

· Mar 30, 2015, 13:58 UTC · re: Lee Winder · lore

Re: git fetch --prune removes branches from origin/ with inconsistent case in path names

Lee Winder <lee.winder <at> gmail.com> writes:
Show 7 quoted lines
> 
> When using git fetch --prune, git will remove any branches from
> remotes/origin/ that have inconsistent case in folder names.
> ...
> Thanks
> Lee
> 
Hello,
Same type of issue here using Jenkins.
In a gitBash console:
$ git branch --list
* feature/testCI1
  feature/testCI2

In Jenkins Console output (git plugin is 2.3.5): Seen branch in repository origin/Feature/testCI1 Seen branch in repository origin/Feature/testCI2

Both are running on Windows

← back to recent threads