2012-03-22 3 views
2

Я думаю я получил себя странно маленькая проблема здесь ... Я все еще довольно новый мерзавцу поэтому, пожалуйста, голые со мной ...Два названия ветки Git, указывающие на одну ветку?

Я создал репозиторий голое GIT ("Core »), клонированный из ранее существовавшего репо (« Производство ») с использованием gitflow. Я клонировал это голый репо снова в не-голый репо («Staged»), а затем повторно инициализировал git-поток в Staged (потому что кажется, что gitflow не натолкнулся, когда я клонировал голый репо ...?)

Но я только что заметил что-то странное. Предположим, что я участвую в организованном репо, в ветке разработки и редактирую текстовый файл (test.txt). Я запускаю git status, и он сообщает мне, что test.txt был изменен. Потрясающие.

Теперь я не совершить или слияние, но я проверка мастер с помощью git checkout master, то я бегу git status снова, и он говорит, что test.txt был изменен!

Исправить меня, если я ошибаюсь, но любые изменения, которые я делаю на ветке разработки, не должны влиять на ветку мастера? Это заставляет меня поверить, что моя «ведущая» ветвь и «разветвленная» ветвь на самом деле одна и та же ветвь.

Ясно, что я совершил крайне глупую ошибку где-то вдоль линии, но где? Без понятия. Это случилось с кем-то раньше? Любые указатели на диагностику проблемы здесь? Любая глупая ошибка, которую я мог бы придумать кому-нибудь? Есть ли лекарство?

(Я хотел бы отметить, что я, на самом деле, потребность развивать и мастер-филиал)

Update
После совершения изменений в моей развития отрасли, результатом является то, что мастер действительно, вернется к правильному состоянию и что разработка теперь находится в обновленном состоянии. Я начинаю чувствовать, что, возможно, это именно то, как ведет себя git ???

Окончание
Отметьте здесь комментарии. Оказывается, это было рассмотрено ранее. Мои извинения.

+0

Возможный дубликат [Измененные файлы в ветке git перетекают в другую ветку] (http://stackoverflow.com/questions/246275/modified-files-in-a-git-branch-are-spilling-over -into-another-branch) – Gareth

+0

Да! Это именно то, о чем я говорю. Извините, ребята, я долго искал SO, но не нашел эту ссылку. Это дубликат. Мои извинения. – Jace

+0

Вы уверены, что находитесь в ветке разработки? И когда вы делаете «git checkout master», уверены ли вы, что он переключит вас на мастер? Что вы получите, если вы запустите: 'git branch' – ttux

ответ

1

С git существуют три важные области: репозиторий (где хранятся все версии) промежуточного каталога и рабочего каталога. Контейнерный каталог - это место, где вы выполняете свои изменения перед фиксацией (или где файлы идут, когда вы отправляете команды «git add»). Рабочий каталог - это набор файлов, которые вы видите в вашем выгруженном репозитории.

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

В вашей конкретной ситуации вы изменили свой рабочий каталог, а затем обменялись ветвями.Поскольку изменения не выполняются (или добавляются в промежуточную область), когда вы меняете ветку, git просто возвращает рабочий каталог в главную ветку и сохраняет ваши незафиксированные изменения. Это позволяет вам зафиксировать изменения в другой ветке, если хотите.

1

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

Смежные вопросы