git show-branch詳細解

8217 ワード

転載:http://roclinux.cn/?p=1022 git-show-branchというコマンドです。それはgit branchと違って、後者の機能は現在のすべてのブランチをリストすることです。
まずこの二つの命令の違いを見てみましょう。
[rocrocket@wupengchong cloneteset]$ git show-branch
* [master] 1
 ! [wukong] 5
--
+ [wukong] 5
+ [wukong^] bajie
+ [wukong~2] 2
*+ [master] 1
[rocrocket@wupengchong cloneteset]$ git branch
* master
wukong
[rocrocket@wupengchong cloneteset]$
明らかに、git show-branchは多くの難しいものを出力します。はい、次はこの難解な命令を一例で解決します。まずgit倉庫を新設します。以下の通りです。
[rocrocket@wupengchong showbranch]$ cat roc.c
int main()
{
printf("Firstly");
return 0;
}

[rocrocket@wupengchong showbranch]$ git branch
* master

[rocrocket@wupengchong showbranch]$ git show-branch
[master] Firstly

[rocrocket@wupengchong showbranch]$ git log
commit b11be45d63226eac8b89fa05119d4282cfd73df2
Author: rocrocket ;
Date:   Fri Nov 14 12:00:18 2008 +0800

Firstly

[rocrocket@wupengchong showbranch]$
一度だけcomitを提出しましたが、git show-branchにブランチの名前とその開発ログの内容が表示されます。(私の最初のcomitの開発ログは単語である「Firstly」です。)その後、roc.cファイルを修正してもう一度提出します。開発ログは「Secondly」に設定されています。
[rocrocket@wupengchong showbranch]$ cat roc.c
int main()
{
printf("Firstly");
printf("Secondly");
return 0;
}

[rocrocket@wupengchong showbranch]$ git log
commit 5102e1a2c812dfa6539d77f1ecede46faaa26c4f
Author: rocrocket ;
Date:   Fri Nov 14 12:04:54 2008 +0800

Secondly

commit b11be45d63226eac8b89fa05119d4282cfd73df2
Author: rocrocket ;
Date:   Fri Nov 14 12:00:18 2008 +0800

Firstly

[rocrocket@wupengchong showbranch]$ git show-branch
[master] Secondly

[rocrocket@wupengchong showbranch]$
以上のように、この時点でgit show-branchが出力したのはmaster分岐の第二回comitの開発ログであり、第一回の「Firstly」はもう現れていません。次に、私達は新しいブランチを作って、古い決まりをwukoongといいます。
[rocrocket@wupengchong showbranch]$ git branch wukong
[rocrocket@wupengchong showbranch]$ git branch
* master
wukong

[rocrocket@wupengchong showbranch]$ git show-branch
* [master] Secondly
 ! [wukong] Secondly
--
*+ [master] Secondly

[rocrocket@wupengchong showbranch]$ git checkout wukong
Switched to branch "wukong"

[rocrocket@wupengchong showbranch]$ git-show-branch
! [master] Secondly
 * [wukong] Secondly
--
+* [master] Secondly

[rocrocket@wupengchong showbranch]$
この時またgit show-branchはちょっと複雑な出力が現れます。中には**とそして、これはなんのめちゃくちゃですか?
1、ギt-show-branchを二回見ます。はい、分岐を切り替えることによって引き起こされたのです。だから断定できます現在の分岐と関係があります。
  • (星号)は、HEADが指す分岐を表し、
  • 、他の枝は、と表示されます。(感嘆符)
  • この二つの記号はちょっと特別です。もう観察されたかもしれません。と*はインデントの違いがあります。和*は、行が「現在の分岐」であるかどうかを識別するだけでなく、列を識別するためにも使用されます。
    例えば、
  • 第一列をマークします。つまり、下の出力は第一列に符号がある限り、マスターの分岐を指示しています。
  • 、*第二列では、下の出力に符号がある限り、wukuong分岐を示す。
  • (OK、よく観察して、自分で実験します。この知識点はだめです。後の内容は分かりませんよ。)
    2、「-」の記号が見られます。この記号は区切り記号で、各列をより明確に区別するために使われています。特別な意味はありません。「-」記号の上部の内容は主にブランチリストを表示するために用いられますが、「-」の下の内容はブランチcomitの関係です。
    3、「-」の下の内容+(プラス記号)はこの行の標識を含むcomit(スペース)の所在分岐がこの行の標識を含まないcomit-(マイナス記号)はその分岐がmergeを経て得られたもので、行の内容はmergeの基本情報であることを示しています。(アスタリスク)は、列の表示+(プラス記号)が必要で、この列が現在の分岐所の列である場合、+(プラス記号)を*(アスタリスク)に変換します。
    例を分析します。
    [rocrocket@wupengchong showbranch]$ git-show-branch
    * [master] merge
     ! [wukong] wukong:Thirdly
    --
    -  [master] merge
    *+ [wukong] wukong:Thirdly
    結論の一つは現在の分岐はマスター分岐であり、wukong分岐は現在の分岐ではないということです。
    結論の2:マスタ分岐のHEADが指すcomitの開発ログの最初の行動「merge」文字列であり、wukuong分岐のHEADが指すcomitの開発ログの最初の行の情報は「wukeong:Thirdry」である。
    結論の3:「-」記号によって、マスター分岐のHEADの最近のcomitはmergeによって得られたものであり、今回のmerge後のcomitの情報は「merge」文字列であることが分かります。「-」の後ろにもう一つのスペースがありますが、これは現在の行の意味です。今回のcomitはwukuong分岐(第二列)に影響がないので、「スペース」で表します。
    結論四:「*+」の列によって、現在の行のcomitの影響範囲はmaster分岐とwukeong分岐に及んでいます。つまり、comitは両方の分岐で有効です。これはなぜですか?簡単です。これはmergeの力です。これはwukeong支店での今回のcomitがmergによってmergに分岐されました。
    ok~このいくつかの部分が分かりました。基本的にはgit-show-branch命令をマスターしました。最後に一例をあげます。分析してみます。何が起こったのかを見てください。
    [rocrocket@wupengchong showbranch]$ git-show-branch
    ! [bajie] shaseng:Secondly
     * [master] Fourth
      ! [shaseng] shaseng:Secondly
       ! [wukong] shaseng:Secondly
    ----
     -   [master] Fourth
    +*++ [bajie] shaseng:Secondly