Ветвление и слияние с Git - PullRequest
       0

Ветвление и слияние с Git

1 голос
/ 22 декабря 2011

Мне неясен базовый принцип работы веток Git.

Скажем, у меня есть репозиторий на ветке master (это ствол моего проекта), и он на v 1.0.Затем я решаю, что хочу создать ветку experimental, чтобы сделать что-то необычное, поэтому я делаю git branch experimental из основной ветки, добавляю некоторые новые функции и фиксирую свои изменения в experimental.

Мой партнер идет и обновляет ветку master до версии 1.1, и я помещаю его изменения в мою ветку master.

Будут ли все файлы версии 1.0 в ветке experimental, которые не были изменены моимредактирует experimental, чтобы быть в курсе последних файлов master (например, стать v 1.1)?

Или мне нужно объединить ветвь master в experimental, чтобы все неизмененные файлы в ветке experimental не остались на v 1.0?

Если так, чтопроцесс слияния этих 1.1 изменяется в experimental, не загрязняя ветвь master новыми элементами?

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011

Будут ли все файлы v 1.0 в экспериментальной ветке, которые не были изменены моими правками, оставаться в курсе последних версий мастер-файлов (например, стать v 1.1)?

НетGit не будет изменять файлы за вашей спиной.Может быть, вы хотите, чтобы он оставался на уровне 1,0;)

Или мне нужно объединить основную ветку с экспериментальной, чтобы все неизмененные файлы в экспериментальной ветке не оставались на v 1,0?

Правильно.

Если да, то каков процесс объединения этих изменений 1.1 в экспериментальные, не загрязняя ветку master моей новой напыщенной фигурой?

$ git checkout experimental
$ git merge master
1 голос
/ 22 декабря 2011

Филиалы в Git очень легкие. Это означает, что они просто являются указателями на конкретные коммиты. Коммиты связаны друг с другом через родительский указатель. Это означает, что вы не знаете детей (последующие коммиты), если у вас есть ссылка на конкретный. Слияния совершаются с несколькими родителями. Ветви - это коммиты, на которые указывают несколько родителей. Каждый коммит также указывает на снимок всех файлов в хранилище.

Эта сеть коммитов называется DAG (направленный ациклический граф).

Подробнее об этом можно прочитать здесь:

http://progit.org/book/ch9-2.html

и здесь:

http://eagain.net/articles/git-for-computer-scientists/

Как только вы поймете это, ветвление станет ясным как день! :)

1 голос
/ 22 декабря 2011

В вашей экспериментальной ветке запустите

git merge master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...