2011-12-21 2 views
1

Я не понимаю основополагающий принцип работы ветвей Git.Ветвление и слияние с Git

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

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

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

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

Если да, то в чем заключается процесс слияния этих изменений 1.1 в experimental, не загрязняя также ветку master с моим фанки новым материалом?

ответ

2

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

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

Исправить.

Если да, то в чем заключается процесс слияния этих 1.1 с изменениями в экспериментальные, не загрязняя также ветку мастера с помощью моего напуганного нового материала?

$ git checkout experimental 
$ git merge master 
1

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

git merge master 
+0

так что 'git merge master' вытащит все новые вещи в мастер-ветку в ветвь' Эксперимента ', не переведя какие-либо из «экспериментальных» изменений ветвей обратно в 'master'? Благодаря! – julio

+0

Да, это правильно. –

1

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

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

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

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

и здесь:

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

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

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