Git -stash перемещает мою главную ветку

Я пытаюсь переключиться с ветки функции на мастер, не теряя своих изменений, и поэтому я пытаюсь git stash, а затем переключиться на мастер, но мастер переходит к моей ветке свойств. В основном:

<feature*> $ git status
# On branch feature
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   hay.md
<feature*> $ git rev-parse --short HEAD
737b183 
<feature*> $ git rev-parse --short master
109b5f7 # This happens to be 4 commits ago
<feature*> $ git stash
Saved working directory and index state WIP on feature: 737b183 Some commit
HEAD is now at 737b183 Some commit
<feature> $ git rev-parse --short HEAD
737b183 
<feature> $ git rev-parse --short master
737b183 # WAT??!!!

Неужели я недопонимаю git -stash? Или, может быть, git в целом? Или я неправильно понимаю природу соответствия восприятия и реальности?

Обновление Я просто обнаружил, что он делает то же самое в случае git reset.

<feature*> $ git status
# On branch feature
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   hay.md
<feature*> $ git rev-parse --short HEAD
737b183 
<feature*> $ git rev-parse --short master
109b5f7
<feature*> $ git reset --hard HEAD
HEAD is now at 737b183 Some commit
<feature> $ git rev-parse --short HEAD
737b183 
<feature> $ git rev-parse --short master
737b183 # Hm....

Другое обновление

Это происходит только в одном "экземпляре" репо (я не знаю верного словаря git), поэтому я думаю, что в .git/ есть что-то неуловимое. Решение для бандажей состоит в том, чтобы удалить репо и снова клонировать его с удаленного, но я бы хотел узнать, почему это происходит.

Еще несколько вещей

‹master› » git checkout feature
Switched to branch 'feature'
Your branch is ahead of 'master' by 1 commit.
  (use "git push" to publish your local commits)
‹feature› » echo "Hay" >> hay.md
‹feature*› » cat .git/HEAD
ref: refs/heads/feature
‹feature*› » cat .git/refs/heads/master
93d9d14b0f298ed28cc1520905768281f32d0929
‹feature*› » cat .git/refs/heads/feature
51410c5dcd679b8cf57a7dce2d17be7bbd121923
‹feature*› » git stash
‹feature› » cat .git/HEAD
ref: refs/heads/feature
‹feature› » cat .git/refs/heads/master
51410c5dcd679b8cf57a7dce2d17be7bbd121923
‹feature› » cat .git/refs/heads/feature
51410c5dcd679b8cf57a7dce2d17be7bbd121923

Ответ 1

Я заметил одно и то же поведение, когда случайно создал как ветку, так и тег с именем foo и git, внутренне доступ к комманде по имени и принял неверный.

Возможно, вы случайно создали тег под названием master или что-то в этом роде?

Также git reflog должен показывать, что происходит.