Ответ 1
В git вы можете вывести вывод git-diff
между двумя коммитами:
git diff fa1afe1 deadbeef > patch.diff
Отправьте patch.diff
разработчику и позвольте ему git-apply
его в свое рабочее пространство следующим образом:
git apply patch.diff
Если у другого разработчика уже есть коммиты, доступные в его репозитории, он всегда может подключать его сам, не сливаясь вот так:
git apply < git diff fa1afe1 deadbeef
Затем вы можете add и commit изменения в diff обычный способ.
Теперь вот интересная часть, когда вам нужно объединить патч обратно в главную ветку (это общедоступно). Рассмотрим следующее дерево изменений, где C*
- это исправление от C
в главной ветке:
A---B---C---D master, public/master
\
E---C*---F feature_foo
Вы можете использовать git-rebase
, чтобы обновить ветвь темы (в этом примере с именем feature_foo
) с ней вверх головой. Что это означает, когда вы вводите следующее:
git rebase master feature_foo
Git изменит дерево ревизий, как это, и также применит сам патч:
A---B---C---D master, public/master
\
E*---F* feature_foo
Слияние с ветвью вверх по течению теперь будет простым быстрым слиянием. Также проверьте, что новые коммиты E*
и F*
работают как предыдущие E
и F
соответственно.
Вы можете сделать то же самое с другой веткой разработчика, используя те же шаги, но вместо того, чтобы делать это при публичном репо, вы будете fetching ревизии из репозитория разработчика. Таким образом, вам не придется спрашивать другого разработчика о патче, если он уже доступен из того, что он опубликовал при своем репо.
Обратите внимание на никогда не переустанавливать публичный ветвь, потому что команда перезаписывает историю git, которую вы не хотите делать в ветвях, на которые люди зависят, и создаст беспорядок при слиянии к удаленным репозиториям. Также никогда не забывайте интегрировать часто, чтобы другие члены вашей команды могли принять участие в ваших изменениях.