作業ディレクトリの状態確認
Gitにおける作業ディレクトリ(作業ツリー)は、.gitフォルダが存在する場所そのものです(*1)。SVNなどの集中型のバージョン管理システムになれている利用者は、リポジトリと作業ディレクトリが一体になっていることに違和感を感じるかもしれません。
リスト5はサンプルとしてC#コンソールアプリケーションを作業ディレクトリにコピーし、その状態をgit statusコマンドで表示したものです。
$ git status
# On branch master
#
# Initial commit
#
# Untracked files: ... (1)
# (use "git add <file>..." to include in what will be committed) ... (2)
# # ConsoleApplication.csproj # ConsoleApplication.sln # ConsoleApplication.suo # Program.cs # Properties/ # bin/ # obj/ nothing added to commit but untracked files present (use "git add" to track)
(1)以降に表示されているファイルは、まだリポジトリに登録されていない未追跡ファイルとして表示されています。また、git statusコマンドでは次にどのようなコマンドを実行すればよいか、(2)のようなサジェスチョンを表示してくれます。この場合、次にgit addコマンドを使ってコミットに含められることを表しています。
リポジトリへ登録しないファイルの指定
先ほどのままでは、リポジトリに不要なファイルが追加されてしまいます。Gitの場合は、.gitignoreファイルを使い、リポジトリに追加したくないファイルやフォルダを指定します(リスト6)。
# コメント行です *.suo *.user bin/ obj/
記述方法は他のバージョン管理システムと大きな違いはありません。#で始まるコメント行や、*(アスタリスク)を使ったワイルドカード、フォルダを指定できます。再びgit statusコマンドを実行するとリスト7のように不要なファイルとフォルダが除かれていることが分かります。
$ git status ... # .gitignore # ConsoleApplication.csproj # ConsoleApplication.sln # Program.cs # Properties/
リポジトリへのファイル追加準備
未追跡のファイルをリポジトリへ追加していきますが、いきなりファイルをリポジトリへ追加することはできません。まず、ステージングエリア(末尾参照)と呼ばれるコミット前の準備場所に登録する必要があります。この操作には、git addコマンドを使用します(リスト8)。ただし、ファイルを追加するという意味のaddではなく、ステージングエリアに登録するという意味でのaddです。誤解しやすい部分なので注意してください。
$ git add . … $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: .gitignore # new file: ConsoleApplication1.csproj # new file: ConsoleApplication1.sln # new file: Program.cs # new file: Properties/AssemblyInfo.cs
引数にはファイルやフォルダを指定できます。フォルダを指定した場合は、そのフォルダ配下が再帰的に追加されます。
リポジトリへのコミット
ステージに登録されたファイルをリポジトリに反映するには、commitコマンドを使います(リスト9)。
$ git commit [master (root-commit) 1b45bec] 初期コミット 5 files changed, 129 insertions(+) create mode 100644 .gitignore create mode 100644 ConsoleApplication.csproj create mode 100644 ConsoleApplication.sln create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs
初期設定のままならば、Git Extensionによって登録されたエディタが開くので、コミットログを入力して操作を完了します。
ログの表示
続いてgit logコマンドでコミット内容の確認ができます(リスト10)。SVNのように数値のリビジョン番号は付きません。その代りコミットごとにID(SHA-1のハッシュ値)が付き、これらによって履歴を管理します。これらの番号は長ったらしくコマンドに指定するのがわずらわしいかもしれませんが、最低でも先頭4文字を指定し、他と重複しなければgitが勝手に番号を認識してくれます。
$ git log
commit 1b45bec4f0f0d7fd5880457b929e902fbe545731
Author: statemachine <statemachine@example.com>
Date: Wed Mar 20 09:17:25 2013 +0900
初期コミット
---
$ git log 1b45 // 番号指定
この記事は参考になりましたか?
- 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
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
