如何获取主分支的所有 Git 提交哈希 ID
How to get all Git commit hash IDs of a master branch
我想获取主分支的所有提交哈希 ID。但是,使用以下命令只有最新的提交 ID 与结果匹配。旧的提交哈希 ID 不属于 master 分支。有没有其他方法可以获取只属于 master 分支的提交哈希 ID?
git rev-parse origin/master --all
您可以通过 运行:
获取特定分支(例如 master
)的哈希值
git log --pretty=%H master
Git 中的“分支”仅指向(单个!)提交,并在进行新提交时自动向前移动。一次提交可以指向 0、1、2 甚至更多父提交。如果提交从分支的顶端或头部 可达 ,则该提交被称为“在分支上”。这意味着一旦一个分支被合并到另一个分支中,它就变成了那个分支的一部分。
要获取分支的所有提交 ID 的列表,您可以使用 git rev-list branchname
。当然,这也将包括从其他分支合并到 ino 的提交。如果你总是在同一个方向合并,你 可能 说只有每个提交的 第一个父 是重要的并且与你相关。在这种情况下,您可以过滤修订列表以仅显示可通过第一个父提交访问的提交。为此,请在上面的命令中指定 --first-parent
标志。
...
in my case, this also shows commit hash IDs of branches too
tl;dr 使用 git rev-list master --first-parent
.
在Git中,提交不属于分支。提交相互连接。分支只是指向该分支最新提交的标签。
相反,提交可以从分支到达。
例如,假设您有 master 和从 master 分支出来的功能。看起来像这样。
A - B - C - D - E [master]
\
F - G - H [feature]
master
只是指向提交 E 的标签。feature
只是指向提交 H 的标签。
如果你git log master
你会得到A、B、C、D、E;他们 可以从 master 获得。如果你 git log feature
你会得到 A、B、C、F、G、H;它们是 可访问 功能。
如果您只想查看提交可访问的功能,而不是与 master 共享的功能,请使用 git log master..feature
。这将显示 (A, B, C, F, G, H) - (A, B, C, D, E) 或 F, G, H.
有关更多信息,请参阅 gitrevisions。
将功能合并到 master 并删除功能后,它看起来像这样。
$ git checkout master
$ git merge feature
$ git branch -d feature
A - B - C - D - E - M [master]
\ /
F - G - H
如果你 git log master
你会得到 A、B、C、D、E、F、G、H、M; master 可以访问的所有内容,无论它最初提交给哪个分支。
您可以通过 git log --graph --decorate
查看这些连接和标签。
但是我们可以得到可能是对 master 的原始提交。
在上面的例子中,合并提交 M 连接到两个提交,它有两个“parents”:E 和 H。它们有一个顺序。第一个将是合并到 (master) 的分支,第二个将是合并到 (feature) 的分支。
如果您只关注第一个 parent 提交,您将只获得对 master 的提交:A、B、C、D、E、M。使用 --first-parent
. Both git-log
和 git rev-list
取--first-parent
.
git log --first-parent --oneline master
或
git rev-list --first-parent master
不能保证这会产生对 master 的原始提交,但如果您遵循中央分支工作流,其中分支会合并到 master 中,它会。更复杂的工作流可能会更改 parent 的顺序。
我想获取主分支的所有提交哈希 ID。但是,使用以下命令只有最新的提交 ID 与结果匹配。旧的提交哈希 ID 不属于 master 分支。有没有其他方法可以获取只属于 master 分支的提交哈希 ID?
git rev-parse origin/master --all
您可以通过 运行:
获取特定分支(例如master
)的哈希值
git log --pretty=%H master
Git 中的“分支”仅指向(单个!)提交,并在进行新提交时自动向前移动。一次提交可以指向 0、1、2 甚至更多父提交。如果提交从分支的顶端或头部 可达 ,则该提交被称为“在分支上”。这意味着一旦一个分支被合并到另一个分支中,它就变成了那个分支的一部分。
要获取分支的所有提交 ID 的列表,您可以使用 git rev-list branchname
。当然,这也将包括从其他分支合并到 ino 的提交。如果你总是在同一个方向合并,你 可能 说只有每个提交的 第一个父 是重要的并且与你相关。在这种情况下,您可以过滤修订列表以仅显示可通过第一个父提交访问的提交。为此,请在上面的命令中指定 --first-parent
标志。
in my case, this also shows commit hash IDs of branches too
tl;dr 使用 git rev-list master --first-parent
.
在Git中,提交不属于分支。提交相互连接。分支只是指向该分支最新提交的标签。
相反,提交可以从分支到达。
例如,假设您有 master 和从 master 分支出来的功能。看起来像这样。
A - B - C - D - E [master]
\
F - G - H [feature]
master
只是指向提交 E 的标签。feature
只是指向提交 H 的标签。
如果你git log master
你会得到A、B、C、D、E;他们 可以从 master 获得。如果你 git log feature
你会得到 A、B、C、F、G、H;它们是 可访问 功能。
如果您只想查看提交可访问的功能,而不是与 master 共享的功能,请使用 git log master..feature
。这将显示 (A, B, C, F, G, H) - (A, B, C, D, E) 或 F, G, H.
有关更多信息,请参阅 gitrevisions。
将功能合并到 master 并删除功能后,它看起来像这样。
$ git checkout master
$ git merge feature
$ git branch -d feature
A - B - C - D - E - M [master]
\ /
F - G - H
如果你 git log master
你会得到 A、B、C、D、E、F、G、H、M; master 可以访问的所有内容,无论它最初提交给哪个分支。
您可以通过 git log --graph --decorate
查看这些连接和标签。
但是我们可以得到可能是对 master 的原始提交。
在上面的例子中,合并提交 M 连接到两个提交,它有两个“parents”:E 和 H。它们有一个顺序。第一个将是合并到 (master) 的分支,第二个将是合并到 (feature) 的分支。
如果您只关注第一个 parent 提交,您将只获得对 master 的提交:A、B、C、D、E、M。使用 --first-parent
. Both git-log
和 git rev-list
取--first-parent
.
git log --first-parent --oneline master
或
git rev-list --first-parent master
不能保证这会产生对 master 的原始提交,但如果您遵循中央分支工作流,其中分支会合并到 master 中,它会。更复杂的工作流可能会更改 parent 的顺序。