Gitの基礎練習
真似してみました。Windows XPのコマンドプロンプトでgitの基本的なコマンドを動かしていきます。 gitを学び始めるきっかけにどうぞ。
元ネタ: http://www.hyuki.com/techinfo/svninit.html
ダウンロードとインストール
Windowsユーザは、「Git on MSys」を使うのがよさそうです。
http://code.google.com/p/msysgit/
Windowsと言いつつ、いきなりmingwというかUNIX shellな世界に突入してしまいますが、気にしないようにしましょう。ダウンロードは以下。
http://code.google.com/p/msysgit/downloads/list
私は Git-1.5.5-preview20080413.exe をダウンロードしてみました。とりあえず一番新しそうなやつを持ってきてインストールすればいいでしょう。
リポジトリ用のディレクトリを作ります
リポジトリ用のディレクトリC:\home\reposを作ります。
$ pwd /c/home/ $ mkdir repos $ cd repos $ pwd /c/home/repos
プロンプトやらコマンドやらファイルのセパレータやらが違うのは気にしないでください。微妙にWindowsじゃない感じ。
リポジトリを初期化します
はじめにリポジトリを初期化します。この初期化は、そのリポジトリを使う最初だけ行います。
$ git init Initialized empty Git repository in .git/ $ ls -la total 0 drwxr-xr-x 3 maki Administ 0 May 22 01:19 . drwxr-xr-x 4 maki Administ 0 May 22 01:17 .. drwxr-xr-x 6 maki Administ 0 May 22 01:19 .git
新しいモジュールを作ってインポートします
新しいモジュールをリポジトリにインポートします。
ディレクトリとファイルを作成します
まずは作業場所を整え、readme.txtというファイルを作ります。
$ mkdir work $ cd work/ $ mkdir myproject $ cd myproject/ $ echo "This is readme file." > readme.txt $ cat readme.txt This is readme file.
カレントディレクトリ以下を新しいモジュールmyprojectとしてリポジトリにインポートします
インポートするリポジトリは、file:///C:/home/repos/myprojectのようにURLで指定することもできますが、ふつうのファイルのパスの方が扱いやすいのでそちらにしてみます。
とはいえ、ここは分散レポジトリなので、SVNとはやり方がだいぶ違います。
まず、カレントディレクトリをひとつの新しいリポジトリとしてgit initし、ファイルを追加します。
$ git init Initialized empty Git repository in .git/ $ git add . warning: LF will be replaced by CRLF in readme.txt
次に、先ほど作った中心となるリポジトリではなく、今作ったカレントディレクトリのレポジトリにコミットします。
$ git commit -a -m "Initial import." Created initial commit 9739dfa: Initial import. warning: LF will be replaced by CRLF in readme.txt 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme.txt
そして、そのカレントのレポジトリから、先ほどの中心となるレポジトリにpushします。
$ git push /c/home/repos master Counting objects: 3, done. Writing objects: 100% (3/3), 231 bytes, done. Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To c:/home/repos * [new branch] master -> master
これでインポートが完了しました。
cloneして作業開始
myprojectモジュールをcloneしよう
$ git clone /c/home/repos myproject Initialized empty Git repository in c:/work/myproject/.git/ $ cd myproject/ $ ls readme.txt $ cat readme.txt This is readme file.
確かにreadme.txtが取り出せています。
実は、ここには管理用のディレクトリ .git も隠し属性付きで作られています。
$ ls -la total 1 drwxr-xr-x 3 maki Administ 0 May 22 01:35 . drwxr-xr-x 3 maki Administ 0 May 22 01:35 .. drwxr-xr-x 7 maki Administ 0 May 22 01:35 .git -rw-r--r-- 1 maki Administ 22 May 22 01:35 readme.txt
差分を確認します
readme.txtファイルに一行追加してから、「元にしたリビジョン(リビジョン1)」と「作業コピー」との差分を確認してみましょう。
$ echo "Nice to meet you." >> readme.txt $ cat readme.txt This is readme file. Nice to meet you. $ git diff diff --git a/readme.txt b/readme.txt index 050dbb1..f407ccf 100644 --- a/readme.txt +++ b/readme.txt @@ -1 +1,2 @@ This is readme file. +Nice to meet you. warning: LF will be replaced by CRLF in readme.txt
コミットすると編集結果がリポジトリに反映されます
作業コピーに加えた修正は、コミットして、さらにpushしてはじめて中心のリポジトリに反映されます。コミットするときには、-mオプションで修正内容を書きます。
$ git commit -a -m "Add a greeting." warning: LF will be replaced by CRLF in readme.txt Created commit warning: LF will be replaced by CRLF in readme.txt 9aa769c: Add a greeting. 1 files changed, 1 insertions(+), 0 deletions(-) $ git push Counting objects: 5, done. Writing objects: 100% (3/3), 281 bytes, done. Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To c:/home/repos/.git 9739dfa..9aa769c master -> master
とりあえずここまで。
追記: id:takahashim:20080523#p2 に続きます。