Я использую bash по умолчанию, который поставляется с Git, я создал главную ветвь (не голый) и сделал из нее ветку (назовем ее ветвью new_feature).Объяснение того, как работает Git checkout
Я играю с ветвлением, и я добираюсь до точки, где я тестирую команду git checkout
. Как я понял, команда checkout позволяет переключиться с одной ветви на другую. Кроме того, из того, что я понял, команда checkout не позволяет вам переключаться с одной ветви на другую, если рабочий каталог загрязнен (т. Е. Имеет неустановленные изменения).
Теперь у меня есть файл с именем index.html
как в моей основной ветке, так и в моей ветке свойств. Оба файла в двух ветвях имеют одинаковый контент. Теперь вот что я сделал, и это смутило меня.
Я нахожусь в моей ветке свойств (в настоящее время оба файла имеют точный контент), если я отредактирую содержимое index.html
, скажем, тег заголовка, и я не выполнил его, если я выдаю команду git checkout master
, Git does позвольте мне переключиться на главную ветку, и что более интересно, так это если я выдаю команду git status
в основной ветке, то неустановленные изменения, которые я сделал в ветви функции, копируются в главную ветку. Разве это не разрушительно?
То, что меня больше смутило, заключается в том, что в течение того времени, когда 2 файла на обеих ветвях, мастер и ветвь признаков, не имеют одного и того же содержимого, если я внутри ветки функции и редактирую содержимое файл index.html
, скажем, тег заголовка, теперь, если я выдаю команду git checkout master
, это не позволяет мне сделать переключатель, потому что он обнаружил, что мое рабочее дерево или каталог грязно.
Нижняя строка, как я заметил, основываясь на этих событиях, если 2 файла имеют один и тот же контент, если вы находитесь в одной ветви, изменяете содержимое этого файла и проверяете на эту другую ветку, Git позволяет сделать переключатель и Git несут неустановленные изменения, внесенные вами в эту ветку назначения.
Но если 2 файла на двух разных ветвях имеют различный контент, если вы находитесь на одной ветке, сделали редактирование этого файла и выпустите команду checkout, чтобы переключиться на другую ветку, Git не позволяет вам делать переключатель, потому что по какой-то причине он обнаруживает, что рабочее дерево загрязнено.
Является ли мое понимание правильным или неправильным? Также я могу немного пояснить, почему мое понимание неверно или правильно.
Я капитализировал ваши предложения и исправил для вас правописание. «Coz» не является технически реальным словом, даже несмотря на то, что это неправильное написание и аббревиатура для «из-за». –
@Cupcake Я почтительно предполагаю, что JPlus2 способен решить для себя/своего желаемого уровня формальности и правильности. Ваш шаг через десять минут и «исправление» текста поражает меня, как, ну, грубо и, честно говоря, высокомерно.(Да, я понимаю, что я подвергал себя аналогичному обвинению: P) Комментарий, поясняющий, что он/она будет более склонным воспринимать более серьезно и, следовательно, иметь больше шансов получить хороший ответ и предположить, что она/он отредактировал сам вопрос с этим, было бы более уместно, ИМХО. Приветствия. – Edward
[SLaks имеет правильный ответ] (http://stackoverflow.com/a/18690485/1256452), но это может помочь, если вы думаете о git, позволяющем вам переносить изменения, которые вы начали «раньше», вы поняли, что находитесь на неправильной ветвью, к правильной ветке, выполнив «git checkout». Лично я думаю, что это было бы менее запутанным, если бы это была другая команда (например, «git oops-forget-to-switch-branch-ранее-do-it-now-if-safe»), но она * совершенно безопасна , сначала это немного удивительно, что он позволяет вам это делать. – torek