Git merge без удаленной ветки - PullRequest
2 голосов
/ 01 ноября 2019

После выполнения GIT-слияния из ветви A в ветвь BI обычно проводят слияние, сравнивая (объединенную) локальную ветвь с (не объединенной) удаленной ветвью:

git checkout mybranch
git pull mybranch
<do merge>
git difftool --dir-diff origin/mybranch mybranch

Это работает хорошо. Но если у меня есть локальный филиал, в котором нет удаленного филиала, я не могу этого сделать.

Как лучше всего в этом случае сделать чистую разницу?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2019

В дополнение к ответу alfunx, вы можете использовать схему именования reflog, чтобы получить предыдущую версию HEAD (т. Е. То, что раньше было HEAD до объединения):

git difftool -d HEAD@{1}..HEAD

Вы можете проверить git reflog чтобы подтвердить, что ожидаемый коммит. Он немного менее прямолинеен, чем синтаксис HEAD^, но позволяет избежать любой двусмысленности в отношении того, против какого родительского слияния с несколькими родителями вы распространяетесь.

2 голосов
/ 01 ноября 2019

Другими словами: вы хотите сравнить последний коммит перед слиянием с текущим коммитом.

git difftool -d HEAD^..

^ относится к первому родителю коммита слияния, в данном случае HEAD(^ это сокращение от ^1). .. используется для указания диапазона, и если любая из сторон пуста, Git будет использовать HEAD, поэтому вышеуказанный диапазон эквивалентен HEAD^..HEAD.

...