Сотрудничайте с помощью git и отдельных веток, не добавляя кучу избыточных коммитов - PullRequest
1 голос
/ 02 марта 2012

Я сотрудничаю с дизайнером в проекте под названием «Проверенные учетные записи»

Я занимаюсь разработкой в ​​ветке под названием verified_accounts, а дизайнер находится в ветке под названием chris_verified_accounts.Мы периодически объединяем изменения друг друга, и когда проект будет завершен, мы объединяем verified_accounts в master

Однако все это объединение вызывает кучу ненужных / дублирующих коммитов.Например:

http://dl.dropbox.com/u/2792776/screenshots/2012-03-02_1024.png

Commit (1) - это объединение pull-запроса, содержащего только commit (2).Это означает, что эти коммиты по существу идентичны (они имеют одинаковые различия и т. Д.).Аналогично, commit (3) - это слияние, которое объединяет только commit (4), что означает, что 3 и 4 также практически идентичны

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

Какова лучшая практикадля такого рода вещей?

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

Поскольку вы сливаетесь, вы получаете коммиты слияния, что неизбежно при слиянии ветокВместо этого вы можете одновременно тянуть и перебазировать:

git pull --rebase
2 голосов
/ 02 марта 2012

Лучшая практика - видеть эти коммиты такими, какие они есть: коммиты слияния. Это не просто «дублирующие коммиты». (На самом деле они вообще не являются дублирующими коммитами.) Они содержат информацию о том, что ветвь была объединена с другой. Когда вы пытаетесь иметь линейную историю (которая - давайте посмотрим правде в глаза - это реликт систем, которые не могли справиться с ветвлением и особенно слияниями в разумном смысле), вы неизбежно теряете информацию о том, как ваш исходный код появился таким, какой он есть. сейчас. Коммиты слияния являются важной частью истории вашего проекта, позволяя вам увидеть, какие коммиты принадлежали какой ветке и в какой момент времени. Это позволяет вам следить за каждой веткой даже спустя годы после того, как вы их написали. Если в коммите есть что-то подозрительное, вы можете использовать эту контекстную информацию, чтобы понять, почему вы это сделали.

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

(Да, я люблю Git. И ветви. И слияния.)

...