Используй git squash в ветке уже нажал и работай с колораторами - PullRequest
0 голосов
/ 28 марта 2019

В предыдущих ответах мне неясно, влияют ли на командную работу следующие команды:

git checkout -b featureX
// add some changes ..
git commit ...
// add some changes ..
git commit ...
// add some changes ..
git commit ...
// add some changes ..
git commit ...
git push ..

and another partner does the following:

git pull origin featureX
// add some changes ..
git commit ...
// add some changes ..
git commit ...
...
git rebase -i featureX ~ 5 featureX
git push origin + featureX

and I then:

git pull
git checkout featureX
git rebase master
// or
git merge master

Это создает проблемы?

Если да, то как работать в команде?с большим количеством коммитов, а затем слиться разборчиво?

1 Ответ

2 голосов
/ 28 марта 2019

Шаг, который создаст проблемы для вас, это часть:

git rebase -i featureX ~ 5 featureX
git push origin + featureX

and I then:

git pull

Причина, по которой может создавать проблемы, заключается в том, что если вы изменили код с момента последнего нажатия, ваш код мог бы основываться на коммитах, которых больше нет в истории коммитов (они могли быть изменены или удалены вашим товарищ по команде во время интерактивной перебазировки). Это не «неисправимая» проблема, но она может привести к путанице, дублированию коммитов, плохим решениям слияния и т. Д. Поэтому простое правило: не переписывать историю, которую другие люди могли использовать в качестве отправной точки для своих работа.

Вот несколько других идей, которые могут помочь вам организовать ваши коммиты, не сталкиваясь с проблемами в истории git:

  • Запустите git rebase -i в своей собственной ветке перед тем, как перенесет свою работу в общий репозиторий.
  • ИЛИ Подождите, пока все не завершат фиксацию вашей ветки, а затем выполните git rebase -i на работе каждого, прежде чем слиться с мастером. Это безопасно, потому что вы знаете, что никто не будет больше работать над коммитами, которые вы собираетесь изменить.
  • ИЛИ Раздавите ветку, когда вы объединяете ее с master (GitHub (и большинство других хостов) имеют опцию для этого).
  • ИЛИ Не беспокойтесь так сильно о своей грязной истории или просто работайте над тем, чтобы сделать ваши начальные коммиты чище.
  • ИЛИ Работайте над веткой, которую будете использовать только вы (например, feature1-alan). Вы можете отправлять и извлекать из / в эту ветку столько раз, сколько хотите, а также на разных компьютерах по мере необходимости. Вы также можете раздавить коммиты и принудительно толкнуть эту ветку, когда захотите - если у вас нет собственной работы, висящей на другом компьютере. Вы можете объединить эту ветку с веткой команды feature, master или чем-то еще после того, как вы раздавили и довольны тем, как выглядят ваши коммиты.
...