CodeZine(コードジン)

特集ページ一覧

Git操作の基礎

Windowsユーザー向けGit入門(2)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/05/17 14:00

目次

ファイルの差分表示

 ファイルを修正し差分を表示してみましょう。リスト10はProgram.csを修正し、状態の表示と差分を取ったところです。

[リスト11]ファイルの差分表示
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Program.cs                                          ...(1)
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git diff Program.cs                                               ...(2)
diff --git a/Program.cs b/Program.cs
index e0dde98..91ce32d 100644
--- a/Program.cs
+++ b/Program.cs
@@ -9,6 +9,7 @@ namespace ConsoleApplication
     {
         static void Main(string[] args)
         {
+            System.Console.WriteLine("ようこそ Gitの世界へ!!");
         }
     }
 }

 (1)によってProgram.csに修正があったこと(modified)が分かります。また、(2)のgit diffコマンドで差分を表示でき、"+"の行が追加されています。また、リスト12のようにコミットIDやファイル名を「...」でつないで、その間のログを表示することもできます。

[リスト12]ファイルの修正
$ git diff 1b45be...4b5f

ファイルの変更

 最後に変更をリポジトリに反映します。先ほどと同じくaddコマンドを使ってステージに登録した後にコミットします(リスト13)。

[リスト13]ファイルの修正
$ git add Program.cs
...
$ git commit
[master 4d5fcc3] コンソール表示の追加
 1 file changed, 1 insertion(+)
...

 また、すでにリポジトリに登録されているファイルに関しては、-aコマンドをつけることによって、git addコマンドを省略することができるショートカットになっています(リスト14)。新規作成されたファイルには適用できません。

[リスト14]ファイルの修正
$ git commit -a Program.cs

ファイルを削除する

 リポジトリに登録されたファイルを削除するには、git rmコマンドを利用します(リスト15)。この時点ではまだファイルの削除がステージされたにすぎません。削除を完了するためには、他の操作と同様にコミットする必要があります。作業ディレクトリにファイルを残したままにしたい場合は、--cachedオプションを指定できます。

[リスト15]ファイルの修正
$ git rm Class1.cs
rm 'Class1.cs'
...
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    Class1.cs
#
$ git commit
[master 78c1a10] Class1.cs の削除
 0 files changed
 delete mode 100644 Class1.cs

$ git rm --cached Class1.cs // Class1.csを残しておきたい場合

ファイルを移動する

 リポジトリに登録されたファイルを移動するには、git mvコマンドを利用します。他の操作同様コミットで移動を完了します。

[リスト16]ファイルの修正
$ git mv Program.cs Program2.cs
...
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       renamed:    Program.cs -> Program2.cs
#
$ git commit
...

ステージングエリアについて

 Gitには作業ディレクトリ、ステージングエリア、リポジトリと3つの状態があることは前述したとおりです。これらの関連を示したものが図1になります。

 繰り返しになりますが、ステージングエリアとはコミット前の準備場所です。修正や移動、削除したファイルを直接コミットすることはできず、ステージングエリアにいったん登録する必要があります。操作が少々面倒にはなりますが、コミット対象を細かく制御できるメリットもあります。このあたりがSVNと異なる作法であって、混乱する元でもあります。まずは、3つの状態について意識することが、Gitを使いこなすためには重要だと思います。

図1:Gitの関連図
図1:Gitの関連図

まとめ

 初回として、Gitのセットアップ方法からCUIによるリポジトリ作成~変更までを駆け足で解説しました。まだローカルリポジトリのみの操作説明で、SVNとの違いが明確になってきていませんが、次回以降でGUIによる操作説明、リモートリポジトリなどについて順を追って解説していきます。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Windowsユーザー向けGit入門

著者プロフィール

  • WINGSプロジェクト statemachine(statemachine)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5