Что означает указывать два двоичных объекта в `git rebase`?
Мой вопрос состоит из двух частей.
Первая часть: две капли в git rebase
Я знаком с git rebase -i HEAD^n
, где n
означает количество коммитов назад, на которые вы хотите сделать ребаз.
Но я также иногда вижу git rebase -i <branch> HEAD
, В этом случае - Как это добавил <branch>
параметр имеет значение?
Вторая часть: справочная страница для git rebase
Итак... Я проверил справочную страницу и вижу следующее:
На этой странице руководства я вижу [<upstream> [<branch>]]
, который, я думаю, может ответить на мой вопрос к первой части.
Но особенность этого в том, что я знаю <>
означает обязательный параметр, и []
означает необязательный параметр. В [<upstream> [<branch>]]
Я вижу обязательный параметр внутри необязательного параметра. Что это значит?
1 ответ
Как это добавил
<branch>
параметр имеет значение?
Это происходит потому, что rebase воспроизводит все коммиты между апстримом и веткой.
git rebase -i HEAD^n
означает, что все коммиты между HEAD^n и текущей ветвью HEADgit rebase -i <branch> HEAD
(или жеgit rebase -i <branch>
) означает все коммиты между<branch> HEAD
(которая здесь является ветвью вверх по течению) и текущая ветвьHEAD
, Например:git rebase -i origin/master HEAD
: все коммиты еще не нажаты.
[<upstream> [<branch>]]
означает, что оба параметра являются необязательными.
Поскольку git был создан автором Linux, см. Man-страницы - соглашения по написанию man-страниц Linux
Скобки (
[]
) окружают необязательные аргументы
За git rebase
эти необязательные параметры:
Если
<branch>
указано,git rebase
будет выполнять автоматическийgit checkout <branch>
прежде чем делать что-либо еще. В противном случае он остается в текущей ветви.Если
<upstream>
не указан, восходящий канал настроен вbranch.<name>.remote
а такжеbranch.<name>.merge
варианты будут использованы.
Текущая ветвь сбрасывается на<upstream>
, Это имеет тот же эффект, что иgit reset --hard <upstream>
,
относительно <...>
соглашение, см., например, " Синтаксис аргумента утилиты ":
имена параметров, которые требуют замены фактическими значениями, отображаются следующим образом:
<parameter name>
Угловые скобки используются для символической группировки фразы, представляющей один параметр, и соответствующие приложения не должны включать их в данные, представляемые в утилиту.
Наконец, ссылка не является типом блоба.
Ссылка является (см. " Git Internals - Git References ") ссылкой на значение SHA1.
BLOB-объект представляет контент, хранящийся в git-репо. Смотрите " Git Internals - Git Objects - Хранение объектов ".