Git冒険記(一):概要

29108 ワード

転載元: http://liuhui998.com/2011/01/21/git-adventures-1/ Git冒険記(一)【編集者按】は分布式バージョン制御システムの重要な代表であるGitはすでに多くの人に認識されています.これは私たちが熟知しているCVS、SVNに対して、さらに同時に分散式制御システムのMercuurialとして、どのような利点と不足がありますか?今回のInfoQ中国語ステーションでは、Git Community Bookの翻訳者である劉輝を招いて、InfoQで「Git冒険記」というコラムを開いて、Gitを使った経験と、Gitに対する彼の意見を共有することができました.GitはLinus.TorvaldがLinuxカーネルの開始を管理するために開発したオープンソース分散型バージョンコントロールシステム(DVCS)である.2002年から、LinuxカーネルはBitKeeperを使ってバージョン管理を行ってきましたが、2005年にBitKeeperとLinuxカーネルオープンソースコミュニティの提携関係が終わり、BitKeeperはもう無料では使えなくなりました.
従来のSVN、CVSなどのバージョン制御システムは、1つの倉庫だけで、ユーザはこの倉庫に接続して提出を開始する必要があります.Gitなどの分散バージョン制御システム(もちろん、BitKeeper、Mercurialなども含みます.)各作業リストには完全な倉庫が含まれています.オフライン作業をサポートしています.まず作業を現地倉庫に提出してから遠隔のサーバーの倉庫に提出してください.分散式の処理も開発をより便利にしてくれます.開発者は簡単に現地でブランチを作成して日常開発を行うことができます.一人のローカル倉庫は平等で独立しています.あなたの地元の提出によって直接他の人に影響を与えます.
正直に言うと、Gitの速度は私が使っているバージョン制御システムの中で一番早いです.ここで言っている速度は、ローカル提出、ローカル署名、リモート倉庫提出、リモート倉庫から取得します.;ローカルの操作速度とローカルファイルシステムは同じレベルで、リモート倉庫の操作速度とSFTPファイル転送は同じレベルです.もちろんGitの内部実現メカニズムと関連しています.ここではあまり展開しません.興味のある友達はここを見てください.Git is the next Unix.
私たちは新しい言語を勉強する時、よく「ハローワールド」のプログラムから始まります.
ここで、もし皆さんのパソコンにGitがインストールされていたら、ここを見てもいいです.もちろん、後の章ではインストールの問題を専門に説明します.
まずGitのコマンドラインを開きます.windowsでは「Gigt Bashショートカット」をクリックします.LinuxまたはUnix likeプラットフォームではコマンドラインインターフェースを直接開けてもいいです.
備考:$記号の後の文字列はコマンドライン入力を表します.コマンドライン入力後はコメントを表します.他の部分はコマンドライン出力です.
まず倉庫を作りましょう.
1
2
3
4
$mkdir testGit <strong>#      </strong> $cd testGit <strong>#      </strong> $git init<strong> #              </strong> Initialized empty Git repository in e:/doc/Git/test/testGit/.git/
はい、前の3行の命令で地元のGit倉庫を作りました.この倉庫は空いている倉庫です.
私たちはコマンドラインで実行します.
1
2
3
4
5
6
7
8
9
10
$ git status <strong>#         </strong> # On branch master ( master   ) # # Initial commit # nothing to commit (create/copy files and use "git add" to track) (             ,         ,  ”git add”          ) $ git log <strong>#           </strong> fatal: bad default revision 'HEAD' (             ,        。BTW:              :) )
今はこの倉庫に内容を追加しましょう.
1
2
3
4
5
6
7
8
9
10
11
12
$ echo “hello Git” > readme.txt <strong>#       hello Git      </strong> $ git add readme.txt <strong># readme.txt   <a href="http://www.google.com/url?q=http%3A%2F%2Fprogit.org%2Fbook%2Fzh%2Fch2-2.html&sa=D&sntz=1&usg=AFQjCNEYEQ9ebcoED7X5W658v903gnBUaQ">   </a> </strong> $ git status <strong>#          </strong> # On branch master # # Initial commit # # Changes to be committed:(            ) # (use "git rm --cached <file>..." to unstage) # # new file: readme.txt #
はい、ファイルは一時保管区に預けられました.今から倉庫に提出してもいいです.
1
2
3
4
5
6
7
8
$ git commit -m "project init" <strong>#              </strong> [master (root-commit) 8223db3] project init 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme.txt $ git status # On branch master nothing to commit (working directory clean) (                   ,     )
git logsコマンドを実行すると、先ほどの提出記録が見えます.
1
2
3
4
5
$ git log commit 8223db3b064a9826375041c8fea020cb2e3b17d1 Author: liuhui998 <[email protected]> Date: Sat Jan 1 18:12:38 2011 +0800 project init
「8223 db 3 b 064 a 98263741c 8 fea 020 cb 2 e 3 b 17 d 1」という文字列が今回作成した提出の名前です.見たところとても熟しているのではありませんか?もしよくロバを使う友達なら、それはロバの中の内容の識別子と同じで、すべてSHA 1列です.Gitは、提出内容をSHA 1 Hash演算することにより、それらのSHA 1列の値を提出毎に一意の識別として取得する.一般的な暗号学の原理によれば、二つの提出内容が違っていれば、その名前は同じではない.逆に名前が同じなら、内容も同じであることを意味します.
今は倉庫の書類の内容を変えたいです.今倉庫に提出します.
1
2
3
4
5
6
7
8
9
10
11
12
$ echo "Git is Cool" >> readme.txt <strong>#          </strong> $ git status <strong>#         </strong> # On branch master # Changed but not updated: (   ,          ) # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: readme.txt # no changes added to commit (use "git add" and/or "git commit -a")  (         ,   “git add”           ,    “git commit -a”                 )
OKです.つまり私達は倉庫に提出された書類を修正しました.それでは私達を見てみたいです.
どこを変えたら提出するかどうかを決めます.
1
2
3
4
5
6
7
8
$ git diff <strong>#                     </strong> diff --git a/readme.txt b/readme.txt index 7b5bbd9..49ec0d6 100644 --- a/readme.txt +++ b/readme.txt @@ -1 +1,2 @@ hello Git +Git is Cool
はい、私達の願い通り、readme.txtの最後の一行に「Git is Cool」を追加しました.
はい、私達は今からreadme.txtを一時預かりエリアに預けます.
1
$ git add readme.txt
私たちは今倉庫の状態を見てみます.
1
2
3
4
5
6
7
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: readme.txt #
提出してもいいです
1
2
3
4
$ git commit -m "Git is Cool" [master 45ff891] Git is Cool 1 files changed, 1 insertions(+), 0 deletions(-) (       ,    ,    )
新しいログを見てみます.
1
2
3
4
5
6
7
8
9
$ git log commit 45ff89198f08365bff32364034aed98126009e44 Author: liuhui998 <[email protected]> Date: Sat Jan 1 18:17:07 2011 +0800 Git is Cool commit 8223db3b064a9826375041c8fea020cb2e3b17d1 Author: liuhui998 <[email protected]> Date: Sat Jan 1 18:12:38 2011 +0800 project init
これは先ほど修正を提出した時に作成した提出です.
皆さんはこのように見ていますが、ちょっと迷いましたか?でも大丈夫です.もしあなたのコンピュータがGitをインストールしたら、上のこれらの命令を全部実行してください.感性的に認識します.
次の章では、どのようにwindowsとLinuxに配置Gitをインストールするか、及び注意すべき問題を説明します.
参照
GitCommunnityBook 中国語版
ProGit 中国語版
Git is the next Unix
この文章はInfoQ中国語ステーションで初めて発行されました.著作権は全部です.原文は「Git冒険記(一)」です.転載するなら、必ずこの声明を添付してください.ありがとうございます.InfoQ中国語ステーションは中高級技術者向けのオンライン独立コミュニティです.Java、NET、Ruby、SOA、敏捷、アーキテクチャなどの分野にタイムリーで深い情報を提供します.ハイエンド技術大会はQConのようです. 、オフライン技術交流活動QClub、無料ミニブックダウンロードは「構築師」などです.