如果我创建了一个新的并且提交到这个新分支,为什么我似乎在同一个分支中拥有所有提交?

时间:2016-07-28 11:41:23

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

我是 GIT 的新手,我对分支机构有以下疑问。

我使用以下命令创建了一个名为 easy-mode 的新分支:

git branch easy-mode

然后我看到我的分支,这是输出:

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

因此,它应该意味着 easy-mode 分支已正确创建,并且此时它是活动分支。这是真的吗?

好的,然后我修改了一个名为 game.js 的文件,我已将它添加到暂存区域,最后我已经提交了它。所以我希望这个提交与作为活动分支的 easy-mode 分支有关。

现在的问题是尝试显示提交图我得到了这些结果:

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (easy-mod
e)
$ git log --graph master easy-mode
* commit 59b4bce5964825b7c6fec4270ba34d2166f5168e
| Author: Andrea Nobili <nobili.andrea@gmail.com>
| Date:   Thu Jul 28 13:17:01 2016 +0200
|
|     Make asteroids split into 2 smaller pieces instead of 3
|
* commit cba1887f66a579e81c70a607d8402e84fa6e966d
| Author: Andrea Nobili <nobili.andrea@gmail.com>
| Date:   Thu Jul 28 12:30:06 2016 +0200
|
|     fixing: fixed the bug related of the weapon delay
|
* commit 3884eab839af1e82c44267484cf2945a766081f3
| Author: cbuckey <caroline@udacity.com>
| Date:   Fri Apr 29 12:33:05 2011 -0700
|
|     Add color
|
* commit 3e42136a76cf78c6c421cd720427bf6337c2d623
| Author: Doug McInnes <doug@dougmcinnes.com>
| Date:   Tue Mar 15 22:34:49 2011 -0700
|
|     now using requestAnimationFrame
|
|     see this for more info:
|     http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
* commit 4035769377cce96a88d5c1167079e12f30492391
| Author: Doug McInnes <doug@dougmcinnes.com>
| Date:   Wed Jun 9 21:04:32 2010 -0700
:

所以我正在执行命令:

git log --graph master easy-mode

我希望看到分支到 easy-mode 分支的分支包含最后一次提交(提交59b4bce5964825b7c6fec4270ba34d2166f5168e )到简易模式分支。

但在我看来,我没有 easy-mode 分支,并且所有提交都在同一行。

为什么呢?怎么了?我错过了什么?

编辑1:

这是 git log --graph --oneline --decorate --all 命令的输出:

Andrea@Andrea-PC MINGW64 ~/Documents/WS_vari/version-control/asteroids (easy-mod
e)
$ git log --graph --oneline --decorate --all
* 67e5e37 (HEAD -> easy-mode) feature: easy mode, the asteroids are split in 2 instead of 3
* cba1887 (master) fixing: fixed the bug related of the weapon delay
* 3884eab (origin/master, 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 (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
* f19cb1b Fix typo in space
* 75928a9 Use space for movement and enter for shooting
* ac83b72 mostly finished ipad version

正如您所看到的,最后一次提交是:

* 67e5e37 (HEAD -> easy-mode) feature: easy mode, the asteroids are split in 2 instead of 3

我无法理解它是否进入新的简易模式分支,或者它是否进入分支,因为在打印的图形中我看不到 | / ,用于将新分支标识到图表中(因为硬币分支显示在上一个输出中)。

为什么呢?我错过了什么?

2 个答案:

答案 0 :(得分:0)

为了在一个命令中创建并结帐新分支

git checkout -b easy-mode

最常见的命令,只需使用一行提交消息即可将所有分支整齐地标记为

git log --graph --oneline --decorate --all

我通常会将这些长公共命令分配为别名

git config --global alias.la 'log --graph --oneline --decorate --all'

现在,您只需使用

即可调用它
git la

答案 1 :(得分:0)

简易模式分支显示为分支的延续,因为主模式没有提交任何内容,因为 easy-mode < / strong>已创建:

    master                                   master
      |                                        |
      v            is topologically            v
A--B--C             equivalent to        A--B--C--D
       \                                          ^
        D                                         |
        ^                                     easy-mode
        |
    easy-mode

创建存储库的实验性克隆并将内容提交到 master 。那么您的历史将不再是线性的,简易模式将明确区别于

       master
         |
         v
A--B--C--E
       \
        D
        ^
        |
    easy-mode