Cygwin - Git をインストール・設定!

Updated:


当方の Cygwin 環境をちょっと整理(フォルダ移動)した際、あれこれと再インストール・設定をしました。 そこで、Git についての記録を今まで取っていなかったと思い今回記録として残しておくことにしました。

Git とは分散型バージョン(リポジトリ)管理ツールです。 今までは Subversion とか CVS、Windows なら VSS とかの集中型バージョン管理ツールが定番でした。

集中型では、開発時に常にローカルから中央リポジトリ(サーバ)へアクセスして、最新ソースを取得する必要がありました。 そのため、ネットワークが使えない環境では使えないなどのデメリットがありました。

分散型では、ローカルにもリポジトリを用意しておき、中央とはソースのやり取りではなくソースの変更を同期する、という特徴があります。

その他、バージョン管理の詳細は別途ご確認ください。

また、Windows には msysGit なる GUI ツールもありますが、アンインストールする際にレジストリ周りで手こずったり、日本が使えないなどの問題があり、現在は使用していません。 最新(4ヶ月程前にリリース)の msysGit は日本語も扱えるようになったみたいですが。。。

Git インストール・設定方法

0. 前提条件

Cygwin でのインストール・設定を想定しています。 Linux 等でも同様だと思いますが、インストール部分は yum とか aptitude とか使うようになると思います。 また、GUI ツールを使用する事は想定していません。 そして、一番重要なのは今回は

  • ローカルリポジトリのみで運用する。
  • 中央リポジトリは使用しない。

分散型と言いながらローカル完結型です。(個人利用なので)

1. インストール

Cygwin の setup.exe 等で以下のパッケージをインストールする。

  • git (Git 本体)
  • git-svn (Subversionリポジトリと連携する際に必要)

apt-cyg コマンド等が利用できる環境なら以下のコマンドでインストールする。

$ apt-cyg install git
$ apt-cyg install git-svn

以下のバージョン確認コマンドでインストールできているかを確認する。

$ git --version
git version 1.7.9

2. 初期設定

最低限必要と思われるユーザ名・メール・カラーリングの設定をする。

$ git config --global user.name "hoge"
$ git config --global user.email hoge@example.com
$ git config --global color.ui "auto"

以下のコマンドで設定内容を確認する。

$ git config -l
user.name=hoge
user.email=hoge@example.com
color.ui=auto

3. リポジトリの作成

既存のディレクトリ( /home/src/example ) を Git 管理する例です。

$ cd /home/src/example
$ git init
Initialized empty Git repository in /home/src/example/.git/

4. ファイルの追加

/home/src/example ディレクトリ配下に管理したいファイルを準備する。 今回は test.rb という Ruby スクリプトを配置した。

5. ファイルをリポジトリに追加

以下のコマンドでスクリプトをリポジトリに追加する。

$ git add test.rb

これでコミット可能の状態(ステージング状態)になる。

  • -u オプションで新規ファイルのステージングはせず、既存ファイルのアップデートのみ行う。
  • -A(-all) オプションで全部のファイルのステージングを行う。
  • -i オプションでインタラクティブモード(対話モード)になる。

インタラクティブモード(対話モード)にした場合は以下のようになる。

$ git add -i
           staged     unstaged path
  1:      +108/-0      nothing test.rb

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help
What now> 7
Bye.

6. リポジトリへのファイル追加の取り消し

コミットしたくないファイルまで add してしまった時に元に戻す方法です。 まず、必要なら以下のコマンドでコミットされるファイルの内容を確認してみる。 (今回はまだ add したばかりなので、空ファイルと今回追加したファイルを比較した事になっている)

$ git diff --cached
diff --git a/test.rb b/test.rb
new file mode 100755
index 0000000..627121b
--- /dev/null
+++ b/test.rb
@@ -0,0 +1,108 @@

====< 省略(add したファイルの内容が表示される) >====

add されたファイルを指定して add の取り消しを行う。

$ git rm --cached test.rb
rm 'test.rb'

取り消しが正常に行われたか、 以下のコマンドでリポジトリの状態を確認する。 (今回の場合、コミットするために add されたものが何もないと言っている。(add が正常に取り消されている))

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test.rb
nothing added to commit but untracked files present (use "git add" to track)

7. コミット

以下のコマンドでステージングされてるファイルをコミット(確定)する。 -m オプションでコミットコメントを入力する。

$ git commit -m "first commit"
 1 files changed, 108 insertions(+), 0 deletions(-)
 create mode 100755 test.rb

コミットする時点で add されていないファイルであっても “-a” オプションを付加することで add してからコミットするようにできる。

以下のコマンドでログが確認できる。

$ git log
commit 9e4848f5ea045cccdcd1368dab2653224c62469d
Author: masaru <masaru@mk-mode.com>
Date:   Fri Jun 22 15:25:26 2012 +0900

    first commit

8. コミットの取り消し

以下のコマンドで直前のコミットを取り消すことができる。 (取り消すと言っても、新たなコミットで直前のコミットが無かった事にする)

$ git revert HEAD

-n オプションを使うと取り消しのみ行う。コミットは別途に行うことになる。 上記の方法とは別に、コミットした行為自体を取り消すには “git reset” コマンドを使用する。

9. プロジェクト(リポジトリ)作成後の基本的な流れ

プロジェクト(リポジトリ)作成後の基本的な作業の流れは以下のようになると思います。

  • ソースの作成・修正
  • git diff で差分確認
  • git add でステージング
  • git commit -m “コミットコメント” でコミット

上記 3 と 4 合わせて git commit -a -m “コミットコメント” でステージング+コミットしてもOK。


以上。





 

Sponsored Link

 

Comments