git(分散型バージョン管理システム)の基本的な使い方
Git はLinuxカーネルのソースコード管理を目的として、リーナス・トーバルズによって開発されたプログラムでソースコード管理を行う分散型バージョン管理システムで動作速度が優れています。 Gitではワーキングディレクトリがリポジトリの全ての履歴を含んでいるため、ローカルのみにアクセスできればよく中央サーバへのアクセスが不可能な状態であってもリビジョン間の履歴を参照する事ができます。
gitの初期構成
gitを利用するユーザの情報を登録する。 設定した内容は .gitconfig に書き出される。
$ git config --global user.name "taro yamada" $ git config --global user.email "taro@example.com" $ git config --global color.ui auto
リポジトリの初期化
$ mkdir myrepos $ cd myrepos $ touch index.html
index.html
<html> hello world </html>
初期化実行
$ git init Initialized empty Git repository in /usr/home/tooru/myrepos/.git/
gitで管理したいディレクトリ下でgit init を行うと全てのファイルやディレクトリをgitで管理できるようになる。
gitで管理したいファイルを追加する
$ git add . $ git commit -m "first commit"
git initした状態ではまだ何もgitの管理対象になっていません。 管理したいファイルを作成した場合git addコマンドを使って管理対象に追加します。 管理対象にファイルを追加した上でgit commitを実行するとコミットオブジェクトが作成されます。 この時-mオプションでコミットメッセージを追加することが出来ます。 ファイルを追加する場合1ファイルづつ追加することも可能です。
$ git add index.html
git add .コマンドは便利ですが管理に含めたくないファイルも登録してしまうこともあります。 間違って管理しないファイルをaddしてしまった場合取り消すコマンドが git resetです。 git add してしまった foo.html を取り消したい場合
$ git reset foo.html
管理したいファイルを追加する別の方法
$ git add -u
-uオプションをつけてaddコマンドを実行するとgitの管理対象に既になっているファイルを次のコミットに追加する事が出来ます。
コミットの手間を省く方法
git commit -m 'first commit' に -a オプションを付ける事で一度のコマンドで追加とコミットが同時に実行出来ます。 $ git add -u $ git commit -m 'first commit' ↓ $ git commit -a -m 'first commit'
特定のファイルのみ先にコミットする
ここでindex.htmlの見た目を変更するためにstyle.cssファイルを新規で追加した時の事を考える。 style.cssの新規作成とindex.htmlの修正とは別の目的であるためコミットを分けた方がいいです。 そんなときはstyle.css を add した上で
git commit -m 'style sheet add' style.css
を実行するとstyle.cssの追加のみのコミットを作成できます。
変更の内容を確認する
git diff
git commitする前に現在のファイルの内容とコミットの内容の差分を見る事ができます。 これからコミットする内容がどのような変更内容なのか見る時にdiffコマンドを利用します。
git diff HEAD
git diff では対象のファイルを一度git addしてしまうとdiffコマンドによる差分は表示されなくなります。 addした後でも diff HEADコマンドを実行すると変更の全てを見る事が出来るようになる。 gitでの HEAD は最新のコミットを指します。
どのファイルが変更されたか見るコマンド
git status
statusコマンドでは最終コミットから変更のあったファイルを表示する事ができます。 下の例ではindex.htmlがmodified(変更済み)である事が分かります。つまりこの次commitをするとindex.htmlの変更がコミットされることとなります。
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD..." to unstage) # # modified: index.html
管理するファイルを対象からはずす
管理されているファイルindex.htmlをエディタなどで編集するとバックアップファイル index.html~ などが勝手に作成されてしまう場合があります。 git add . コマンドなど使うと index.html~ まで一緒に登録されてしまい不都合があります。 gitでは .gitignore ファイルを作成してgitの管理に追加したくないファイルを知らせる事が出来ます。 index.html~ なバックアップファイルを無視させるようにするには
.gitignore
*~
コミット履歴を見る
git log コマンドでこれまでのコミットの履歴をコミットメッセージと共に見る事ができます。
$ git log commit 57dc95f7d9063f7987c8d5cad35284765974e0f8 Author: User tarou yamada <tarou@example.com> Date: Sun Mar 11 23:48:24 2012 +0900 2nd commit commit e9ce4ed65e395667832503d42f3e35169dc73c56 Author: User tarou yamada <tarou@example.com> Date: Sun Mar 11 23:38:47 2012 +0900 first commit
コミットメッセージ以外表示されませんので具体的な変更内容も見たい場合は -p オプションを使う事でdiff形式で見る事も出来ます。
$ git log -p -2 commit 57dc95f7d9063f7987c8d5cad35284765974e0f8 Author: User tarou yamada <tarou@example.com> Date: Sun Mar 11 23:48:24 2012 +0900 2nd commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ commit e9ce4ed65e395667832503d42f3e35169dc73c56 Author: User tarou yamada <tarou@example.com> Date: Sun Mar 11 23:38:47 2012 +0900 first commit diff --git a/index.html b/index.html new file mode 100644 index 0000000..b8e60a0 --- /dev/null +++ b/index.html @@ -0,0 +1,4 @@ +<html> +hello world +</html> +
最新のコミット履歴を見る
git show コマンドを使うと最後にコミットした内容を見る事ができます。
$ git show
コミットIDが分かれば特定のコミットを指定して見る事も出来ます。
$ git show e9ce4ed65e395667832503d42f3e35169dc73c56
コミットのみを捨てる
git commit -a -m 'first commit' はとても便利ですが間違ってコミットしたくないファイルも含めてコミットしてしまった場合を考える。 ワークファイルの変更はそのままでコミットのみを取り消したい場合は
$ git reset HEAD^
直近のコミット及びワークファイルの変更も捨てる場合は
$ git reset --hard HEAD^