Как сравнить ветку с заведомо неизвестным апстримом?

Как я могу сравнить локальную ветвь с ее удаленным восходящим потоком, если я не хочу иметь в виду, какая удаленная ветвь является его восходящим?

Другими словами, я хочу бросить origin/bar во второй строке ниже:

git branch --set-upstream master origin/bar
git log origin/bar..

1 ответ

Решение

origin/bar это просто удобная ссылка на верхнюю ревизию этой ветки в истории, которая обновляется, когда вы выбираете изменения из апстрима.

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

Если вам не нужны обновленные изменения, вы можете использовать git tag чтобы пометить вершину восходящей ветви в некоторой точке, а затем использовать тег для изменения изменений. Или вы можете создать локальную ветку сверху origin/bar и использовать местную ветвь для сравнения. Или вы можете просто использовать git-хэш самой верхней ревизии origin/bar,

Или вы можете поставить символическую ссылку refs/remotes/origin/bar -> .git/refs/foo а затем сделать различий против foo, Это на самом деле будет указывать на современные origin/bar без вызова origin/...

Я не совсем уверен, зачем тебе это делать.

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