GIT: Что происходит во время ветвления? - PullRequest
3 голосов
/ 30 апреля 2011

Мой вопрос действительно невиновен. Я читал о Git, и я уже знаю основы, такие как нажатие и извлечение, создание веток и так далее. Мой наставник сказал мне, что правильный способ работы с git - это извлечь ресурсы, создать новую локальную ветку, перенести и отредактировать эту локальную ветку, и когда вы закончите, вернитесь в главную ветку и объедините ее с вашей локальной веткой. Теперь мой вопрос: что именно происходит за сценой?

  1. Я имею в виду, когда git создает локальную ветку, создает ли она копию главной ветви, которую вы можете редактировать? Если это так, где находятся эти копии?

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

  3. Я полагаю, что причина, по которой люди называют это контролем версий, заключается в ветвях, которые, я думаю ... Представляет версию. Я прав?

  4. Почему мастер называется ветвью? Разве это не багажник? хорошо, это просто очень тупой вопрос, игнорируйте # 4 ... хахаха!

Будем благодарны за ответы на мои невинные детские вопросы. <3 <3 <3 </p>

Ответы [ 2 ]

2 голосов
/ 30 апреля 2011

Я имею в виду, когда git создает локальную ветку, создает ли она копию главной ветви, которую вы можете редактировать? Если да, где находятся эти копии?

Ветка не является копией. Ветвь в Git - это просто «указатель» на последний коммит. Объект фиксации указывает на их родителя (ов), и таким образом вы получаете всю «ветку».

Так что, как только вы переходите от мастера, вы получаете еще один указатель на тот же коммит. Ни меньше, ни больше. Теперь и мастер, и ветвь указывают на один и тот же коммит. Теперь, когда вы продолжаете фиксировать в ветке, указатель ветви продолжает перемещаться, чтобы указывать на его специфичные для ветви фиксации.

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

Если вам не нравится ветка, просто удалите ее - git branch -d hotfix Ветви в Git дешевы, так как, как я сказал, это просто указатель на коммит, что означает, что это файл, содержащий 41 символ Контрольная сумма SHA-1 в .git\refs\heads\branchname

Если вы не хотите удалять ветку, сбросьте предыдущий коммит, используя что-то вроде git reset --hard HEAD~1

Я полагаю, что причина, по которой люди называют это контролем версий, заключается в ветвях, которые, я думаю ... Представляет версию. Я прав?

Мы называем их контролем версий из-за каждой ревизии или фиксации, которая является единицей изменения. Ветвь - это набор изменений, произошедших с определенной точки фиксации или точки ветвления. \

PS: Я, конечно, перефразирую ProGit, поэтому, поскольку вы прокомментировали, что прочитали его, я не уверен, что мой ответ поможет.

1 голос
/ 30 апреля 2011

Я настоятельно рекомендую прочитать Pro Git Book .

...