Слияние мерзавца неоднократно давит

Блок попытки не является дорогим вообще. Минимальная стоимость понесена, если исключение не выдается. И если исключение было выдано, это исключительно обстоятельство, и Вы больше не заботитесь о производительности. Имеет значение, если Ваша программа занимает 0,001 секунды или 1,0 секунды для падения? Нет, это не делает. То, что имеет значение, - то, как хороший информация сообщила Вам, так, можно зафиксировать ее и остановить ее происходящий снова.

29
задан Ken Williams 2 November 2012 в 01:35
поделиться

2 ответа

Это не Это неподходящее место для использования merge --squash . Одно из хороших мест для его использования - это одноразовая тематическая ветка, которую вы собираетесь объединить в свою основную ветку, а затем избавиться от нее. Вся разработка, выполненная в тематической ветке, отображается как одна фиксация в основной ветке. В вашей ситуации вы должны выполнить слияние из ветки разработки в обычном режиме, а затем использовать git-rebase --interactive , чтобы сжать нужные вам коммиты.

Можно ли каким-то образом записать слияние, не создавая «объединить фиксацию» с двумя родителями?

Если я правильно понял вопрос, нет. Абсолютно не .

Можно ли указать git объединить только определенный «диапазон» ревизий, как в SVN?

Да. git merge [хэш фиксации]

Или возможно ли выполнить обычное слияние без загрузки всех ссылок из другой ветки при извлечении?

См. Ответ на предыдущий вопрос.

Или мне следует предоставить настраиваемый драйвер слияния для рассматриваемых файлов, который просто переименовывает «их» версию на «нашу», тем самым разрешив конфликты? Я все еще боюсь, что --squash всегда будет пытаться объединить всю историю, вплоть до общего родителя, решая только половину моей проблемы.

Нет! Только не используйте git merge --squash . Это неподходящее место для его использования!

8
ответ дан 28 November 2019 в 01:54
поделиться

вы можете использовать git rebase -i (интерактивный режим), чтобы скомпилировать все ваши изменения, просто измените строки на m или слияние (обновление: для новых выпусков Git типа s или squash )

у вас будет один коммит, который можно объединить. если вы хотите, чтобы каждый ваш шаг был зарезервирован, вам нужно создать еще одну ветку в своей хакерской ветке перед выполнением перебазирования. Это можно сделать с помощью git branch small-dirty-changes-i-don't-want-anybody- чтобы увидеть

, все это нужно сделать перед попыткой слияния; шаг за шагом:

# on branch "hacking": hack commit hack commit hack commit

# create a reference to your history
$ git branch dirty-history

# sqash your commits by setting all lines to "meld"
$ git rebase -i

# checkout master or the branch you want to merge to
$ git checkout master

# merge your squashed commit
$ git merge hacking
# or: $ git pull hacking
4
ответ дан 28 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: