GIT中这个图表究竟代表什么?

时间:2016-07-28 14:18:48

标签: git version-control git-branch git-log

我在 GIT 中绝对是新手,我有一些问题需要了解如何阅读我正在处理的项目的图表。

所以我做了以下操作。

1)我在项目中创建了一个名为 easy-mode 的新本地分支,这样:

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (master)
$ git branch easy-mode

2)然后我通过以下方式看到我项目的所有区域(本地和远程):

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (master)
$ git branch -a
  easy-mode
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/coins
  remotes/origin/master

所以我有的活动本地分支,简易模式空分支和3 远程分支

3)我从分支切换到简易模式分支,因此每次新提交都将在 easy-mode 上完成分支,而不是,由:

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (master)
$ git checkout easy-mode
Switched to branch 'easy-mode'

现在它已切换:

$ git branch
* easy-mode
  master

4)我将名为 game.js 的文件修改为我的项目,然后添加并提交它,以便将其提交到 easy-mode 分支。

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (easy-mod
e)
$ git add game.js

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (easy-mod
e)
$ git commit
[easy-mode e06528a] feature: easy mode: the asteroids will be splitted in 2 inst
ead 3.
 1 file changed, 2 insertions(+)

5)现在我按 git log --graph --oneline --decorate = full --all 打印图表:

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (easy-mod
e)
$ git log --graph --oneline --decorate=full --all
* e06528a (HEAD -> refs/heads/easy-mode) feature: easy mode: the asteroids will
be splitted in 2 instead 3.
* cba1887 (refs/heads/master) fixing: fixed the bug related of the weapon delay
* 3884eab (refs/remotes/origin/master, refs/remotes/origin/HEAD) Add color
* 3e42136 now using requestAnimationFrame
* 4035769 frame interval was set wrong after game was paused
* 25ede83 a couple missing ends with the ipad version
* df03538 I can't spell 'screen' apparently :)
| * 354dfdd (refs/remotes/origin/coins) Make ships able to spawn on coins
| * 0c6daf1 Make it possible to collect coins
| * a3c0ae4 Create helper functions
| * 656b02e First pass at adding coins
|/
* b0678b1 Revert controls

................................................................
................................................................
................................................................

在这里我有一些问题需要了解我如何阅读上一张图。

为什么远程分支引用/远程/来源/硬币由以 | / 字符开头的“子树”标识:

| * 354dfdd (refs/remotes/origin/coins) Make ships able to spawn on coins
| * 0c6daf1 Make it possible to collect coins
| * a3c0ae4 Create helper functions
| * 656b02e First pass at adding coins
|/

并且 refs / heads / easy-mode 分支看起来更像是图表中的节点而不是子树?

另一个疑问与(HEAD - > refs / heads / easy-mode)标识 easy-node 分支的事实有关。为什么 HEAD ?在我看来,这个分支是项目的负责人(包含最后一次提交或类似的东西)但是分支不应该是树中新的分离分支?

我的考虑有什么问题?我错过了什么?

1 个答案:

答案 0 :(得分:2)

git log显示为时间格式化的提交而不是分支结构。

如果您对git日志进行着色,那么您可能会看到主服务器并不总是最左边的分支。

git log log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all

来自Pretty git branch graphs

git log graph
来自Viewing full version tree in git