Как я могу сказать, что филиалы GIT не полностью объединены?

Поэтому меня интересуют мнения о моем текущем рабочем процессе GIT (который я новичок) и о том, как определить, какие из моих изменений еще не были объединены / перенесены в соответствующие репозитории. Итак, во-первых, моя текущая система выглядит так:

      remote.master
            |
            |
            V
      local.master
   |       |       |
   V       V       V
 branch  branch   branch

Для новой задачи я бы перетащил из remote.master в local.master, создал новую ветку и проверил ее. Я выполнял различные коммиты во время работы над задачей, может быть, переключался на другие задачи, а затем, когда все было готово, переключался с remote.master на local.master, сливал мою ветку с local.master и, наконец, нажимал на remote.master.

Итак, 2 вопроса: для небольшой команды это перебор? Есть ли смысл опускать местные филиалы? Если это так, некоторые советы предполагают, что будут проблемы с "быстрой пересылкой" (что, как я понимаю, изменения не различимы в remote.master), или множество коммитов, которые имеют потенциально неожиданные метки времени и которые трудно проанализировать.

Во-вторых, предполагая вышеописанный рабочий процесс: я иногда часто переключаюсь между задачами. Я хочу экран, который показывает мне:

'branch 01' -> partially merged to local.master 
'branch 04' -> notmerged to local.master 
'local.master' -> partially merged to remote.master

Может случиться так, что я забуду, были ли объединены различные функции и куда. Я определенно не хочу переходить от ветви к ветви и пытаться угадать эту информацию с помощью 'git diff' или других команд. В настоящее время я использую Tortoise GIT в Windows, но я открыт для других графических альтернатив. Иногда я использую оболочку, но предпочитаю пользовательский интерфейс. Есть ли способ получить эту информацию?

1 ответ

Решение

Все, что вы хотите сделать в своей местности, не является излишним. Если вы хотите иметь 100 локальных филиалов, это полностью ваше дело, и если это окажется излишним (вероятно), то вы можете соответствующим образом урезать.

"Проблемы с быстрой пересылкой" - дело вкуса. Поведение Git по умолчанию - ускоренная перемотка вперед, а не слияние, если две ветви не расходятся. Как и автору, мне это тоже не нравится, но я бы не назвал это "проблемой". В качестве обходного пути я выполняю слияния следующим образом:

# merge branch without fast forward and commit
git merge --no-ff --no-commit branchname

# code review
git diff

# commit the merge
git commit -m 'merged: branchname'

Я использую псевдоним rev = merge --no-ff --no-commit упростить шаг слияния git rev branchname (с именем "rev", как в "review", как в "code review").

Чтобы просмотреть журнал только коммитов слияния, используйте другой псевдоним: revlog = log --first-parent

Поскольку я использую отдельную ветвь для каждой функции, таким образом я вижу большие шаги в эволюции проекта, такие как журнал изменений.

На ваш второй вопрос, я думаю, вы ищете эти команды:

# view the branches that have been merged already
git branch --merged

# view the branches that have NOT been merged yet
git branch --no-merged

Я не знаю черепаху, но gitk довольно хорошо, если я правильно помню, он включен в Git Bash.

Другие вопросы по тегам