Есть ли команда git для отображения новых коммитов вверх по течению после выборки?

git command-line-interface shortcut git-log

701 просмотра

3 ответа

595 Репутация автора

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

git log branchName..origin/branchName

Я ищу какой-то хак с интервалом git, который будет представлять интервал branchName..origin / branchName, что-то вроде (не работает, эквивалентно git log ..origin / HEAD)

git log ..origin
Автор: kasi Источник Размещён: 18.07.2016 10:16

Ответы (3)


0 плюса

1704 Репутация автора

Возможно, это не ответ, а скорее длинный комментарий с обходным приемом, который вы могли бы применить, чтобы избежать повторного ввода одной и той же вещи снова и снова.

Вы можете написать себе псевдоним, см. Пример ниже

git config --global alias.branchlog \ `log branch..origin/branch`

alias.<name>- заменяйте <name>все, что хотите, до тех пор, пока вы можете вспомнить. Вы можете вызвать эту функцию так:

git branchlog
Автор: e.doroskevic Размещён: 18.07.2016 10:29

-1 плюса

1661 Репутация автора

Я не проверял это.

  1. Создать Баш файл с помощью команды: git log $1..origin/$1. Назовите это как хотите (я называю это foo.sh).

  2. Убедитесь в том , что это исполняемый файл: chmode +x foo.sh.

  3. запустите команду git: git config --global alias.branchhistory '!./path/to/foo.sh'

Теперь вы готовы попробовать его следующим образом : git branchhistory master.

Автор: joker Размещён: 19.07.2016 09:23

7 плюса

10101 Репутация автора

Решение

Это будет делать то, что вы хотите, при условии, что для вашего филиала настроено удаленное отслеживание:

git log ..@{u}

Он покажет все коммиты, remotes/branchкоторых нет на вашем локальном компьютере branch. Если вы хотите также увидеть ваши локальные коммиты, которые не были переданы, используйте три точки:

git log ...@{u}

Или, если вы хотите видеть только ваши локальные коммиты, которые не были переданы с момента вашей последней выборки, поставьте две точки после @{u}:

git log @{u}..

Объяснение:

  • @{u} сокращение от `HEAD @ {upstream}
    • master@{upstream}означает ветку удаленного отслеживания для моей локальной ветки 'master'. master@{upstream}то же самое , как origin/masterесли ваш masterфилиал отслеживает удаленный филиал с именем masterна пульте дистанционного управления им origin.
    • Если вы опускаете имя ветви (например master), то вместо этого используется ваша текущая ветка.
    • upstreamможет быть сокращено uв этом случае. Так @{u}же, как master@{upstream}если бы ваша текущая ветка была названа master.
  • .. используется для указания диапазона коммитов.
    • A..Bто же самое, ^A Bчто означает показать мне все коммиты в B, но исключить коммиты в A. Это также может быть написано B --not A.
    • Если вы опустите ссылку, например A..или ..B, то пропущенная ссылка считается HEAD.
  • Вы можете видеть, на что настроено ваше восходящее отслеживание git rev-parse --symbolic-full-name @{u}
  • Вы можете явно настроить отслеживание в восходящем направлении с помощью git branch --set-upstream-to=origin/master

Все подробности о спецификациях ревизий вы можете найти в справочных страницах Git :

git help revisions  

Или же

man gitrevisions
Автор: phord Размещён: 30.11.2016 05:47
Вопросы из категории :
32x32