TMO*_*TTM 3 git git-log git-history-graph
feature/XY是功能分支的名称,当前已签出。feature/XY-refactor是另一个分支的名称,它是从 分支出来的feature/XY。
当我运行时git log --oneline,我得到下面的输出。这两个在日志输出的最顶部一个接一个是什么意思?我在 Windows 上使用 git bash。
user@host ~/Documents/repo (feature/XY)
$ git log --oneline
9feb11a (HEAD -> feature/XY, origin/feature/XY) Axis labels
d250b90 (feature/XY-refactor) Refactored
87d49c1 Fix typoe
6a8a7c7 Fix print statement
945ffca Fix code layout
3e747c9 Added spaces after comma
b143713 Changed fontsize
a669cd4 Commented out a print statement
// .. more commits
Run Code Online (Sandbox Code Playgroud)
git log将返回从特定提交或提交集可到达的所有提交(即直到指定提交的历史记录)。当您不指定提交时,它默认为HEAD.
所以你有效地运行了git log --oneline HEAD相当于git log --oneline feature/XY(已签出的分支)。
因此,您的git log结果告诉您,您的feature/XY分支将分支的最后一次提交作为其父级(如果9feb11a是合并提交,则将其父级之一)作为其父级feature/XY-refactor。换句话说,feature/XY-refactor分支已经以feature/XY这样或那样的方式合并了。
git log按时间顺序显示提交列表,但不显示它们的确切关系。要查看这一点,请使用--graph开关,该开关特别适用于--oneline:
git log --oneline --graph
Run Code Online (Sandbox Code Playgroud)
例如,如果feature/XY-refactor在 commit 处分支,然后在完成任何单独的工作之前3e747c9合并,您将看到以下内容:feature/XYfeature/XY
$ git log --oneline --graph
* 9feb11a (HEAD -> feature/XY, origin/feature/XY) Axis labels
|\
| * d250b90 (feature/XY-refactor) Refactored
| * 87d49c1 Fix typoe
| * 6a8a7c7 Fix print statement
| * 945ffca Fix code layout
|/
* 3e747c9 Added spaces after comma
* b143713 Changed fontsize
* a669cd4 Commented out a print statement
// .. more commits
Run Code Online (Sandbox Code Playgroud)
或者,如果feature/XY重新基于feature/XY-refactor,您将看到以下内容:
$ git log --oneline --graph
* 9feb11a (HEAD -> feature/XY, origin/feature/XY) Axis labels
* d250b90 (feature/XY-refactor) Refactored
* 87d49c1 Fix typoe
* 6a8a7c7 Fix print statement
* 945ffca Fix code layout
* 3e747c9 Added spaces after comma
* b143713 Changed fontsize
* a669cd4 Commented out a print statement
// .. more commits
Run Code Online (Sandbox Code Playgroud)
当您使用 时--graph,它可能会对提交重新排序以形成更清晰的图表。
有一个缺陷git log --graph:当您有两个或多个不共享公共根提交的单独提交历史记录时,它不会变得明显。但根据你所说的情况,这不太可能是你的情况。
无论如何,您始终可以通过将其作为参数提供给 来查看任何特定引用或“提交”的历史记录git log。尝试这些命令:
git log --oneline --graph feature/XY
git log --oneline --graph feature/XY-refactor
git log --oneline --graph HEAD
git log --oneline --graph 6a8a7c7
Run Code Online (Sandbox Code Playgroud)
如果您想查看两个或多个分支如何关联:
git log --oneline --graph <branch a> <branch b> ...
Run Code Online (Sandbox Code Playgroud)
如果您想查看所有分支:
git log --oneline --graph --all
Run Code Online (Sandbox Code Playgroud)
作为奖励,这里有一个更详细的git log命令,显示日期、时间和作者:
$ git log --oneline --graph
* 9feb11a (HEAD -> feature/XY, origin/feature/XY) Axis labels
|\
| * d250b90 (feature/XY-refactor) Refactored
| * 87d49c1 Fix typoe
| * 6a8a7c7 Fix print statement
| * 945ffca Fix code layout
|/
* 3e747c9 Added spaces after comma
* b143713 Changed fontsize
* a669cd4 Commented out a print statement
// .. more commits
Run Code Online (Sandbox Code Playgroud)