Что означает указывать два двоичных объекта в `git rebase`?

Мой вопрос состоит из двух частей.

Первая часть: две капли в git rebase

Я знаком с git rebase -i HEAD^n, где n означает количество коммитов назад, на которые вы хотите сделать ребаз.

Но я также иногда вижу git rebase -i <branch> HEAD, В этом случае - Как это добавил <branch> параметр имеет значение?

Вторая часть: справочная страница для git rebase

Итак... Я проверил справочную страницу и вижу следующее:

Синопсис справочной страницы для git rebase

На этой странице руководства я вижу [<upstream> [<branch>]], который, я думаю, может ответить на мой вопрос к первой части.

Но особенность этого в том, что я знаю <> означает обязательный параметр, и [] означает необязательный параметр. В [<upstream> [<branch>]]Я вижу обязательный параметр внутри необязательного параметра. Что это значит?

1 ответ

Как это добавил <branch> параметр имеет значение?

Это происходит потому, что rebase воспроизводит все коммиты между апстримом и веткой.

  • git rebase -i HEAD^n означает, что все коммиты между HEAD^n и текущей ветвью HEAD
  • git 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 - Хранение объектов ".

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