Предотвратить git от записи пустых слияний
Привыкший к SVN, я всегда делаю "обновление" перед тем, как поделиться любыми изменениями, поэтому перед тем, как делать какие-либо нажатия, я всегда вытаскиваю сначала.
Это раздражает, когда я тяну (хотя никаких изменений на пульте дистанционного управления не было) и вижу фиксацию для слияния с 0 changed files with 0 additions and 0 deletions
. Зарабатывает как:
https://github.com/UCF/Harvard-Mobile-Web/commit/be9d6b2d1ab196554e080d8b8647a9d16c8a5ddf
Я считаю, что это бесполезный шум при просмотре истории фиксации.
Может быть, что-то мне не хватает, есть ли смысл в этом коммите? Если нет, есть ли способ предотвратить git от записи пустых слияний?
Ответы
Ответ 1
Само определение git pull
по существу "извлекает и объединяется с новым удаленным HEAD для моей текущей ветки". Если вы хотите переустановить вместо этого, просто git pull --rebase
. Это изменяет тягу, чтобы перегрузить ваши фиксации поверх новой удаленной HEAD.
Лично мне нравится git fetch
(загружать новые объекты с пульта, но не обновлять локальные ветки) и проверять ситуацию, а затем решать, слияние или переустановка.
Ответ 2
Есть несколько вариантов, все сводятся к одному и тому же: git
используйте параметр --rebase
(как упоминалось @cdhowie).
Вероятно, вы обнаружите, что предпочитаете один из них:
Вариант 1: Явно используйте git pull --rebase
каждый раз.
Вариант 2: для каждого проекта, измените файл .git/config
, добавив
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
Вариант 3: в вашем личном ~/.gitconfig
[branch]
autosetuprebase = always
Лично мне нравится вариант 3, так как он позволяет мне не применять ничего на других разработчиков, но все равно не нужно набирать --rebase
каждый раз.
Также см. Как сделать Git по умолчанию использовать rebase для всех моих репозиториев?