![Как реализовать линейный поток Git?](https://rvso.com/image/1414669/%D0%9A%D0%B0%D0%BA%20%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%20Git%3F.png)
В моем dev-центре предпочтительнее следующий git-поток:
- Проверьте ветку проблемы (
issue9
). - Решить проблему (
serve over port 80
). - Совершить (
git commit
...). - Объедините ветку проблем с локальной веткой функций (
cal
). Перенесите локальную ветку функций в
origin
.- Все слияния должны быть ускорены, если это вообще возможно.
Последнее ограничение заставляет меня рвать на себе волосы — на практике я могу либо:
- Объедините исправленную версию проблемы в локальную ветку функций.
- После этого git отказывается отправлять данные в origin из-за удаленных изменений.
- Перенесите удаленные изменения в локальную ветку функций.
- Git автоматически генерирует отдельный коммит слияния.
ИЛИ
- Перенесите удаленные изменения в локальную ветку функций.
- Git автоматически генерирует отдельный коммит слияния.
Есть ли настройка, которую я могу настроить в глобальной/локальной конфигурации git, чтобы добиться такого поведения? Когда я пытаюсь это сделать, я в конечном итоге портю git и мне приходится запускать четыре из пяти команд git, чтобы его очистить.
Я просто хочу emacs && git commit && git checkout cal && git merge issue9 && git push origin cal
, понимаешь?
решение1
Для одноразовых вытягиваний вы можете использовать git pull --rebase
:
$ git commit
$ git checkout cal
$ git merge issue9
$ git pull --rebase
$ git push origin cal
Чтобы настроить git так, чтобы он всегда вел себя таким образом git pull
, сделайте так, чтобы ваш код ~/.gitconfig
выглядел следующим образом:
[push]
default = matching
[branch]
autosetuprebase = always
[color]
status = auto
[merge]
ff = true