Gitを使ってみる


Gitについての詳しい解説はここを参照した。
Git-の基本

Subversionと大きく違うのは分散型バージョン管理システムで機能も多い。Subversionの中央管理に比べて機能は複雑で直感的に分かりにくい。世界的にはGitを使うのが主流になってきているようだが、しかしSubversionになじんだ人たちがこちらに移行するメリットがあるのか無いのかよくわからない。複雑だけども効率的な環境は優秀な技術者側からみれば必要とされると思うが、それなりにきっちりマネージする能力が求められるので万人向けではない気がする。ウォーターフォール開発とアジャイル開発の関係に似ている。Gitを使ってプロジェクト開発しましょう、ということはまだ無いかもしれないがGitに馴れておいた方が後々役に立つとは思う。

リモートサーバにログインしてリポジトリを作成する。

##テスト用リポジトリの作成
%cd git
%mkdir tutorial.git
%cd tutorial.git
%git init --bare --shared=true
Initialized empty shared Git repository in /home/username/git/tutorial.git/

Macのローカルへリモートのリポジトリの複製を行う

$ cd ~/work/git
$ git clone ssh://username@username.sakura.ne.jp/home/username/git/tutorial.git

ディレクトリtutorialが作成される。
ファイルを作成してローカルリポジトリに追加する

$ cd tutorial
$ echo tutorial > first.txt
#indexへ追加する
$ git add first.txt 
##commit されるのはaddした時点のもので現在のファイルの更新は反映されない
##コミットするときのコメントは必須
$ git commit -m "ファイルの追加" 

ローカルのコミットをリモートリポジトリへ反映する

##originはクローン元のリポジトリでmasterは初期に作成されているブランチ
$ git push origin master

##ローカルにもう一つリポジトリをクローンしてファイルを編集してコミットする

$ cd ~/work/git
$ディレクトリtutorial2にクローンする
$ git clone ssh://username@username.sakura.ne.jp/home/username/git/tutorial.git tutorial2
$ vi first.txt
<root>
<a>tutorial</a>
</root>
$ git add first.txt 
$ git commit -m "ファイルの編集"
##2回目以降のpushはアップロード先を省略できる
$ git push

リモートのリポジトリが変更されたのでローカルのtutorialを更新する

$ cd ~/work/git/tutorial
##pullでリモート先の内容を取得する
$ git pull
##tutorial.txtが更新されている

同時に同じファイルを編集する

$ cd ~/work/git/tutorial
$ vi first.txt
<root>
<a>これはディレクトリtutorialで編集した</a>
</root>
$ git add first.txt 
$ git commit -m "tutorialで更新"
$ cd ~/work/git/tutorial2
$ vi first.txt
<root>
<a>これはディレクトリtutorial2で編集した</a>
</root>
$ git add first.txt 
$ git commit -m "tutorial2で更新"

ディレクトリtutorialでpushする

$ cd ~/work/git/tutorial
$ git push

ディレクトリtutorial2でpushする

$ cd ~/work/git/tutorial2
$ git push
##first.txtがコンフリクトしているのでリジェクトされる

マージ作業を行う

$ git pull
$ vi first.txt
<root>
<<<<<<< HEAD
<a>これはディレクトリtutorial2で編集した</a>
=======
<a>これはディレクトリtutorialで編集した</a>
>>>>>>> 4bb103e93d70732bfaf041055503735d24e280cb
</root>
を
<root>
<a>これはディレクトリtutorial2で編集した</a>
</root>
にして保存
$ git add first.txt
$ git commit -m "マージしてコミット"
$ git push