2016-05-25 2 views
0

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

Затем я переключился на другую ветку. В этой ветке я предположил, что это будет новая проверка мастера, но я вижу свой файл логотипа разработки. Разве это не должно быть здесь, потому что это еще одна ветка? Дайте мне знать, если я ошибаюсь.

+1

Git сохранит любые изменения, которые не конфликтуют с новой веткой, к которой вы переключаетесь. Если бы у вас были изменения в каком-либо файле, который имел бы конфликты с одним и тем же файлом в новой ветви, git даже не позволит вам переключать ветвь, если вы не зафиксируете или не сбрасываете изменения. –

+0

Я бы повторил то, что сказал @VishalKamat, - это позволяет вам внесите некоторые изменения, поймите, что эти изменения должны быть в другой ветке, а затем применять их там. После того, как вы выполните изменения, они остаются с этой веткой. – swatkins

+0

Вы добавили вновь созданный файл в репо и совершили изменение? Наверно, у вас нет – user3159253

ответ

1

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

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

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

+0

предложение «совершение изменения не вносит изменения в постоянное состояние» неоднозначно. Внесение изменений _does_ делает изменения постоянными в вашем _local_ repo. Но для _publish_ их один _usually_ должен подталкивать эти изменения во внешний репозиторий. – user3159253

+0

Правда. «Перманентный» - это растянутое слово. В некотором роде изменения в файле постоянны, когда вы нажимаете save в редакторе, иначе, ничто не было постоянным, после того как солнце стало красным гигантом. :) (damn Enter key ...) Я хотел сказать, что до тех пор, пока ваши изменения будут совершены только локально, вы все равно можете легко их вернуть. Как только вы подтолкнули их к серверу, вы, возможно, не сможете этого сделать, поскольку кто-то другой может контролировать сервер, или политика компании запрещает его, или просто потому, что кто-то еще из вас вытащил изменения, которые вы хотите избавиться. – Bugfinger

0

В качестве альтернативы используйте git stash save/git pop, чтобы сохранить/восстановить рабочее состояние до/после переключения ветвей.

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