Какой смысл использовать «git checkout -f», когда «git status» показывает отслеживаемые изменения файлов во всех ветвях - PullRequest
1 голос
/ 28 ноября 2011

У меня есть отслеживаемый файл (старый версионный файл), который я изменил в основной ветке. Статус на главной ветке показывает этот файл как измененный, но Статус в ветке темы также показывает, что файл изменен.

Ранее была ошибка "ошибка: у вас есть локальные изменения на" X "; вы не можете переключать ветви", когда я проверяю другую ветку без выполнения тайника или без использования "-f" в git-checkout.

Я проверил "stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing", но эта ошибка не возникает и я могу оформить заказ, даже если у меня есть локальные изменения.

Есть ли какая-либо конфигурация, которая вызывает эту путаницу?

Ответы [ 3 ]

5 голосов
/ 28 ноября 2011

Если вы не внесете изменения, измененные изменения не являются частью какой-либо ветви, но применимы к вашему рабочему каталогу, и проверка другой ветви также перенесет эти изменения в другую ветку (если нет конфликтов)

Если вы не хотите, чтобы изменения, внесенные вами в master, находились в другой ветке при проверке, либо передайте изменения, либо сохраните их.

2 голосов
/ 28 ноября 2011

Похоже, что ветвь, на которую вы переключаетесь, находится в том же состоянии, что и ветка, с которой вы приходите.Каждая ветка является указателем на дерево коммитов.Поэтому, если две ветви указывают на один и тот же набор коммитов , вы можете переключаться между ними без проверки локальных изменений.Причина в том, что до тех пор, пока вы фактически не зафиксируете изменения, не имеет значения, какой git-код вы их зафиксируете.Однако, как только вы передадите изменения, одна ветвь имеет их, а другая нет, и их история теперь другая.

0 голосов
/ 28 ноября 2011

попробуй

git reset --hard HEAD

на мастера

...