「GUIではじめるGit」の編集履歴(バックアップ)一覧に戻る
GUIではじめるGit - (2012/11/02 (金) 02:41:54) のソース
* GUIで始めるGit Gitに同梱されている GUIツール git-gui/gitk の使い方を説明します。 git gui を使ったgitの入門ってあまり見ませんが、 とても分かりやすいですし、gitが初めての方はまずは git-gui/gitk を使ってみるのがお勧めです。 このページではイントロ部分しか説明しませんが、 このページを見る方がたくさんでてくるようなら 続編も作成しようと思います。 GUIとCUIの橋渡しとして、できるだけ対応するコマンドについても説明しますので、 コマンドライン好きな方も是非このページを見て git 理解の一助にしてください。 目次: #contents() ** 0. git gui がインストールされているか確認 事前準備として「git gui」および「gitk」コマンドを実行し、git gui と gitk が起動できることを確認しましょう。 (Windowsでmsysgitを使っている場合は、フォルダ内で右クリックし「Git GUI」メニューが選択できるか確認) Windowsで msysgit を[[インストール]]している方なら、git gui と gitk が既にインストールされてるはずです。 Linuxで git gui を実行したときに「git: 'gui' is not a git command」のようなエラーがでた方は git gui がインストールできていないと思われるので、以下のようにして git gui と gitk をインストールしましょう。 Ubuntu/Debian系: apt-get install git-gui gitk RedHat/Fedora系: yum install git-gui gitk ** 1. バージョン管理を始める前準備1:リポジトリを作成する バージョン管理を始めるには、初めに変更履歴の保管庫(リポジトリ)を準備する必要があります。 次のようにして作成します。 1. どこのディレクトリ上でも良いので、git gui コマンドを実行します。 (Windowsでmsys版gitを使っている場合は、フォルダ内で右クリックし「Git GUI」メニューを選択) こんな画面がでてくるはずです。 #image(git-gui-init.png) 2. この画面上で「新しいリポジトリを作る」を選択し、 Git管理したいファイルのあるディレクトリを選択して「作成」ボタンを押すと 選択した場所に、リポジトリが作成されます。 なお、github などで公開されているOSSソースを複製して開発を始めるなら 「既存リポジトリを複製する」を選択します。 「ソースの位置」に"git://~" や "http://~" などのリポジトリのパスを指定し、 「先ディレクトリ」に複製先のローカルパスを入れて「複製」ボタンを押すと リポジトリが複製されます。 3. リポジトリが作成された後は、自動的に「リポジトリ」「編集」などのメニュのある別の画面に 切り替わります。この画面は次の作業でも使うので、閉じないでください。 「新しいリポジトリを作る」「既存リポジトリを複製する」のどちらを選択した場合も 作成先 or 複製先のディレクトリの下に .git というディレクトリができていることが 確認できるはずです。これが変更履歴の保管庫(リポジトリ)です。Gitはこの .git ディレクトリの下にファイルの変更履歴を蓄積していくことになります。 参考:コマンドラインでのリポジトリ準備 -新しいリポジトリを作る → git init -既存リポジトリを複製する → git clone <url> <複製先パス> ** 2. バージョン管理を始める前準備2:自己紹介 バージョン管理をする目的の1つは、誰が何時どのような更新したのかを記録し その情報を共有することです。そして、"誰が"という情報は、事前にGitに教えて あげる必要があります。 次のようにしてGitに名前とメールアドレスを教えてあげてください。 1.前準備1で残しておいた画面上で「編集」->「オプション」メニューを選択します。 以下の画面が表示されるはずです。 #image(git-gui-option.png) 2.右側「大域(すべてのリポジトリ)」にあるユーザ名、電子メールアドレス欄に 自分の情報をいれて「保存」すれば自己紹介は完了です。 なお、もしGit管理リポジトリごとに違う名前で仕事をしたいなら右側ではなく 左側にあるユーザ名、電子メールアドレスに情報をいれてください。 右側はOSアカウント毎に設定される共通の設定で、 左側はGitリポジトリ毎に設定できる個別設定です。 右側より左側の指定のほうが優先されます。 また、前準備1-3で「スペルチェック機能は使えません」のエラーが出た方は 2-1の画面の下のほうにある「スペルチェック辞書」欄を“none”に変更して 保存すると良いでしょう。 参考:コマンドラインでの自己紹介 - git config --global user.name "名前" - git config --global user.email "メールアドレス" ** 3. バージョン管理をする(コミットする) ここまでで前準備が終わり、バージョン管理を始められる状態になりました。 以下のようにすると、git gui にてファイルのスナップショットを記録できます。 (ファイルのスナップショットを記録することを、バージョン管理ツールの用語では “コミットする”といいます) 1.git gui の画面左上の「コミット予定に入っていない変更」欄を見てください。 ここに、追加/変更/削除したファイルの一覧が表示されます。 (最新の状態に更新したい場合は「再スキャン」ボタンを押します) 2.ファイル名をクリックすると、画面右側に変更前後の差分が表示されます。 ここで変更内容をチェックして、コミット対象に含める/含めないを判断します。 3.コミット対象(変更をスナップショットに含める)場合は、 ファイルのアイコン部分をクリックします。 下記画像のように、「ステージングされた(コミット予定の)変更」欄にファイルが移動します。 #image(git-gui-add.png) なお、ファイルの一部変更のみをコミット対象に含めたい場合は、 画面右側の差分表示部分で、当該箇所にマウスカーソルを移動した状態で 右クリックすれば、その箇所のみをコミット対象に含めることができます。 また、ステージングされた変更欄にあるファイルのアイコンをクリックすれば、 ステージングを取り消すことができます。 4. 登録したいファイルを全部ステージング・・欄に移動させたら 画面右下のコミットメッセージ欄に、その変更の概要を記入して「コミット」ボタンを 押します。画面左下に、「コミット xxxx を作成しました」と表示されればコミット成功です。 バージョン管理ツールの基本は、ファイルの編集->コミット(スナップショットの取得)の 繰り返しですので、スナップショットをとりたいと思ったら、その都度上記の作業を繰り返していきます。 参考:コマンドラインでの変更の記録 - 変更したファイルの情報を表示 → git status - ファイルの差分確認 → git diff [--cached] - ステージングや取消方法は、git status の出力を参照のこと。 ** 4. 変更履歴を確認する gitk コマンドを実行すると、変更履歴(取得したスナップショットの履歴)が GUIにて確認できます。 gitk の画面はこんなです。 #image(gitk.png) 見て触ってみれば、何がどうなっているのかはすぐ理解できると思います。 とはいえ、念のため説明しておきます。 画面の上部にある点1つ1つがコミットを表わしていて、 新しいコミットが上にあり、古いものほど下に表示されるようになっています。 それぞれの点(コミット)の隣には、コミットメッセージの1行目と、コミット者、コミット日時が表示されています。 コミットメッセージをクリックすると、画面の左下に、そのコミットの詳細(コミットメッセージや、修正前後の差分) が表示されます。また、画面右下には、変更したファイルの一覧が表示されていて、ファイル名をクリックすると 画面の左下の部分がスクロールして、選択したファイルの差分を確認できます。 真ん中の段にあるのは検索フォームで、コミットメッセージなどでの検索ができるようになってます。 デフォルトでは、全てのコミット履歴が表示されるので たくさんコミットされたリポジトリを開く場合は時間のかかる場合があります。 そのような場合は、「gitk -<n>」のようにすると、<n>件のコミットのみに絞った表示ができます。 そのほかにも gitk に渡せる引数はたくさんありますので、 マニュアルを参照すると良いでしょう。 コミット部分をクリックするとメニューが表示され、 そこから様々な操作ができます。 (説明は省略しますが、いろいろできますのでぜひ試してみてください) ** おわり このページでの説明はここまでです。 git gui/gitk では以下の操作もできますので、時間がとれたら その操作方法も記載していきたいと思います。 とはいえ、説明を書かなくてもわかるんじゃないかと思います。GUIですから。 - タグの作成 - ブランチの作成/マージ/リセット - 他リポジトリとの連携(git remote/fetch/pull/push) ----