В Git, как мне отличить от первого фиксации моей ветки?
Я сделал несколько коммитов в локальном филиале, но я не уверен, что лучший способ отличить то, что у меня есть, к состоянию моего ветки. Я знаю, что могу сделать что-то вроде git diff HEAD HEAD~6
, если в моей ветке было 6 коммитов, но я надеялся на то, что не зависело от количества коммитов.
Изменить:
Я не упоминал об этом: я надеялся, что мне не придется прорываться через журнал, чтобы получить хеш от коммита, от которого я отчуждался. Например, если бы у меня было 80 коммитов, это не было бы забавной задачей.
Кроме того, предположим, что исходная ветвь I, разветвленная, уже имела несколько изменений.
Ответы
Ответ 1
Вы хотите использовать синтаксис тройной точки, описанный в git help diff
:
git diff otherbranch...
Это то же самое, что:
git diff otherbranch...HEAD
что совпадает с:
git diff $(git merge-base otherbranch HEAD) HEAD
Команда merge-base
печатает "лучший" (самый последний) общий предок, поэтому приведенная выше команда показывает разницу между последней фиксацией, которая имеет HEAD
, с otherbranch
до HEAD
.
Обратите внимание, что вместо otherbranch
можно использовать @{u}
, чтобы увидеть изменения, сделанные вами после того, как вы расходились с ветвью вверх по течению. Подробнее о синтаксисе см. git help revisions
.
Ответ 2
git diff <SHA-1 of the commit from which you branched>..HEAD
Вы можете получить SHA-1 вашей точки перехода, выполнив git log
.
Ответ 3
Во-первых, вам нужно найти комманду, с которой вы разветвлялись. После этого вы можете просто сделать git diff <branch-point>..HEAD
(как указал yasouser).