git diff, чтобы увидеть, что принесет слияние

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

В последнее время мы все больше и больше сталкиваемся друг с другом, создавая неприятные слияния (дедлайны).

Поэтому мы начали искать способы увидеть, что будет делать слияние. Я нашел способ использовать git diff:

git diff mybranch...hisbranch

Это дает довольно хорошие результаты. Проблема в том, что поскольку он использует последнего общего предка, и этот предок становится все дальше и дальше, в слиянии остается много мусора, который не был изменен ни в одной из наших ветвей.

Поэтому мне интересно, есть ли способ визуализировать, что именно будет делать слияние.

Я пытался:

git diff $(git-merge mybranch hisbranch) hisbranch

Кажется, это работает нормально, но я хочу визуализировать слияние по-другому, поэтому я попытался:

git diff $(git-merge hisbranch mybranch) mybranch

Но в данном случае git-merge: command not found

Кто-нибудь знает хороший способ получить разницу между двумя ветвями, показывающую, что принесет слияние? Может быть, выделить конфликты?

Если нет, есть ли какой-нибудь визуальный инструмент, который позволит вручную выполнить фиксацию, чтобы можно было выбрать лучшую версию кода.


person TechplexEngineer    schedule 30.07.2012    source источник


Ответы (1)


Есть и другие способы визуализировать происходящее, но я считаю, что самый простой — это git merge --no-commit. Со страницы руководства:

--commit, --no-commit
Perform the merge and commit the result. This option can be used to override --no-commit.

With --no-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge
result before committing.

По сути, я просто выдаю git merge --no-commit <branch> и проверяю результаты. Если они мне не нравятся, я выдаю git merge --abort, или, если я хочу зафиксировать слияние, я обычно продолжаю с git commit.

person Christopher    schedule 30.07.2012
comment
Можно ли как-то посмотреть, что именно было изменено? Может быть, сравните этот код слияния без фиксации с HEAD. - person TechplexEngineer; 31.07.2012
comment
Конечно. После выдачи слияния --no-commit git diff --cached покажет вам, что именно подготовлено, а git diff (без аргументов) покажет конфликтующие файлы. - person Christopher; 31.07.2012