ファイルの差分表示
ファイルを修正し差分を表示してみましょう。リスト10はProgram.csを修正し、状態の表示と差分を取ったところです。
$ 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やファイル名を「...」でつないで、その間のログを表示することもできます。
$ git diff 1b45be...4b5f
ファイルの変更
最後に変更をリポジトリに反映します。先ほどと同じくaddコマンドを使ってステージに登録した後にコミットします(リスト13)。
$ git add Program.cs ... $ git commit [master 4d5fcc3] コンソール表示の追加 1 file changed, 1 insertion(+) ...
また、すでにリポジトリに登録されているファイルに関しては、-aコマンドをつけることによって、git addコマンドを省略することができるショートカットになっています(リスト14)。新規作成されたファイルには適用できません。
$ git commit -a Program.cs
ファイルを削除する
リポジトリに登録されたファイルを削除するには、git rmコマンドを利用します(リスト15)。この時点ではまだファイルの削除がステージされたにすぎません。削除を完了するためには、他の操作と同様にコミットする必要があります。作業ディレクトリにファイルを残したままにしたい場合は、--cachedオプションを指定できます。
$ 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コマンドを利用します。他の操作同様コミットで移動を完了します。
$ 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を使いこなすためには重要だと思います。
まとめ
初回として、Gitのセットアップ方法からCUIによるリポジトリ作成~変更までを駆け足で解説しました。まだローカルリポジトリのみの操作説明で、SVNとの違いが明確になってきていませんが、次回以降でGUIによる操作説明、リモートリポジトリなどについて順を追って解説していきます。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Windowsユーザー向けGit入門連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト statemachine(statemachine)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

