Git使用チュートリアル(3)

4494 ワード

この内容は廖雪峰の公式Gitチュートリアルに基づいて作成され、操作を記録して知識を強固にするために使用されています.
本文は主に以下のいくつかの方面からGitの使用について紹介する.
  • 取付Git
  • バージョンライブラリ
  • を作成
  • タイムシャトル
  • このセクションでは、タイムシャトルの内容について引き続き説明し、そのバージョンのロールバックについて説明します.
    タイムシャトルのバージョンが戻る
    これで、ファイルの変更をマスターし、Gitバージョンライブラリに変更をコミットしました.今、もう一度練習して、readme.txtファイルを変更します.
    Git is a distributed version control system.
    Git is free software distributed under the GPL.

    次にコミットを試みます.
    $ git add readme.txt
    $ git commit -m "append GPL"
    [master 8835644] append GPL
     1 file changed, 1 insertion(+), 1 deletion(-)
    

    上記の操作と同様に、ファイルを変更したり、提出したりします.合計3つのバージョンのreadme.txtファイルが入庫したことを振り返ると、次のようになります.
    バージョン1:write a readme file
    Git is a version control system.
    Git is free software.

    バージョン2:add distributed
    Git is a distributed version control system.
    Git is free software.

    バージョン3:append GPL
    Git is a distributed version control system.
    Git is free software distributed under the GPL.

    もちろん、実際の仕事の中で、私たちの頭の中で何千行のファイルが毎回どんな内容を変更したかを覚えているはずがありません.そうしないと、バージョン管理システムが何をしなければなりませんか.バージョン管理システムには、Gitでgit logコマンドで表示される履歴を示すコマンドがあるに違いありません.
    $ git log
    commit 883564497bc877acf839dd2589a2cf8c6988e6a4 (HEAD -> master)
    Author: legendhua 
    Date:   Wed May 8 16:05:41 2019 +0800
    
        append GPL
    
    commit 88d343da5f03503622ef58308374895dbeb11099
    Author: legendhua 
    Date:   Wed May 8 12:19:31 2019 +0800
    
        add distributed
    
    commit 31b5d90aaa558fbb8a95596aea0becaf69af76cc
    Author: legendhua 
    Date:   Wed May 8 10:07:54 2019 +0800
    
        write a readme file
    
    git logコマンドは、最近から最も遠いコミットログを表示し、3回のコミットを見ることができます.最近のコミットはappend GPLで、前回はadd distributedで、最初のコミットはwrite a readme fileです.
    出力情報が多すぎて目まぐるしく見える場合は、--pretty=onelineパラメータを加えてみてください.
    $ git log --pretty=oneline
    883564497bc877acf839dd2589a2cf8c6988e6a4 (HEAD -> master) append GPL
    88d343da5f03503622ef58308374895dbeb11099 add distributed
    31b5d90aaa558fbb8a95596aea0becaf69af76cc write a readme file
    

    88356.はcommit id(バージョン番号)です.バージョンクエリーについて説明します.次に、タイムシャトルのバージョンのロールバックを実現し、指定したバージョンに戻る方法について説明します.
    add distributedのバージョンに戻るには、どうすればいいですか?まずバージョン番号の知識を理解しておきます.GItではHEADは現在のバージョン、つまり最新の提出88356…を表しています.前のバージョンはHEAD^で、前のバージョンはHEAD^^です.もちろん、前のバージョンは100個の^と書くのは数えにくいので、HEAD~100と書きます.
    現在のバージョンappend GPLを前のバージョンadd distributedにロールバックするには、git resetコマンドを使用します.
    $ git reset --hard HEAD^
    HEAD is now at 88d343d add distributed
    

    readme.txtファイルを表示すると、前の変更バージョンにロールバックされていることがわかります.
    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software.

    これでwrite a readme fileバージョンに戻ることもできます.戻る前にgit logで現在のバージョンの状態を確認してみると、append GPLのバージョンはもうありません.
    $ git log
    commit 88d343da5f03503622ef58308374895dbeb11099 (HEAD -> master)
    Author: legendhua 
    Date:   Wed May 8 12:19:31 2019 +0800
    
        add distributed
    
    commit 31b5d90aaa558fbb8a95596aea0becaf69af76cc
    Author: legendhua 
    Date:   Wed May 8 10:07:54 2019 +0800
    
        write a readme file
    

    現在のバージョンHEADはadd distributedのバージョンですが、ロールバック前のappend GPLに戻りたい場合は、append GPLのバージョン番号を見つけるだけです.コマンドインタフェースが閉じていない場合は、バージョン番号8835644が表示されます.
    $ git reset --hard 883564
    HEAD is now at 8835644 append GPL
    

    書類を見ると、私は胡漢山がまた帰ってきたので、不思議ではありません.
    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software distributed under the GPL.

    コマンドラインのインタフェースが閉じられ、コンピュータも再起動された場合、Gitはどのように特定のバージョン番号を探していますか?
    $ git reflog
    8835644 (HEAD -> master) HEAD@{0}: reset: moving to 883564
    88d343d HEAD@{1}: reset: moving to HEAD^
    8835644 (HEAD -> master) HEAD@{2}: commit: append GPL
    88d343d HEAD@{3}: commit: add distributed
    31b5d90 HEAD@{4}: commit (initial): write a readme file
    

    歴史コマンドから見ると、append GPLのバージョン番号は8835644なので、無事にタイムスリップして帰ることができました.
    小結
    まとめてみます.
  • git reflogが指すバージョンが現在のバージョンであるため、Gitはバージョンの履歴間を行き来し、コマンドHEADを使用することができます.
  • がシャトルする前に、git reset --hard commit_idでコミット履歴を表示して、どのバージョンにロールバックするかを決定し、現在の変更前の履歴(現在を含む)しか表示されず、後で追跡できません.
  • が将来に戻るには、git logでコマンド履歴を表示して、将来のバージョンに戻るかどうかを決定します.