1

我的问题分为两部分。

第一部分:两个斑点git rebase

我熟悉git rebase -i HEAD^n,其中n表示您希望重新定位到的提交次数。

但是,我有时也会看到git rebase -i <branch> HEAD<branch>在这种情况下 - 添加的参数如何产生影响?

第二部分:git rebase 的手册页

所以....我检查了手册页,我看到以下内容:

git rebase 的手册页概要

在那个手册页上,我看到[<upstream> [<branch>]]了,我认为这可能会回答我对第一部分的问题。

但是,关于这个的特殊之处在于,我知道这<>意味着强制参数,并且[]意味着可选参数。在[<upstream> [<branch>]]中,我在可选参数中看到了一个强制参数。这是什么意思?

4

1 回答 1

1

添加的<branch>参数有何不同?

之所以这样做,是因为 rebase 会重播上游和分支之间的所有提交。

  • git rebase -i HEAD^n表示 HEAD^n 和当前分支 HEAD 之间的所有提交
  • git rebase -i <branch> HEAD(或)表示(这里是上游分支)和当前分支git rebase -i <branch>之间的所有提交。例如::所有尚未推送的提交。<branch> HEADHEADgit rebase -i origin/master HEAD

[<upstream> [<branch>]]表示两个参数都是可选的
由于 git 是由 Linux 的作者创建的,请参阅手册页 - 编写 Linux 手册页的约定

方括号 ( []) 包围可选参数

对于git rebase,这些可选参数是:

如果<branch>指定,将在执行任何其他操作之前git rebase执行自动。git checkout <branch>否则它会保留在当前分支上。

如果<upstream>未指定,将使用配置在branch.<name>.remotebranch.<name>.merge选项中的上游。
当前分支重置为<upstream>. 这与 具有完全相同的效果git reset --hard <upstream>

关于<...>约定,请参见例如“ Utility Argument Syntax ”:

需要用实际值替换的参数名称如下所示:

<parameter name>

尖括号用于对表示单个参数的短语进行符号分组,符合要求的应用程序不应将它们包含在提交给实用程序的数据中。

最后,ref 不是一种 blob。
ref 是(参见“ Git Internals - Git References ”)对 SHA1 值的引用。
Blob 表示存储在 git 存储库中的内容。请参阅“ Git 内部 - Git 对象 - 对象存储”。

于 2015-09-13T03:59:56.410 回答