SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windowsユーザー向けGit入門

Git操作の基礎

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


  • X ポスト
  • このエントリーをはてなブックマークに追加

作業ディレクトリの状態確認

 Gitにおける作業ディレクトリ(作業ツリー)は、.gitフォルダが存在する場所そのものです(*1)。SVNなどの集中型のバージョン管理システムになれている利用者は、リポジトリと作業ディレクトリが一体になっていることに違和感を感じるかもしれません。

*1

 git init --separate-git-dirオプションで.gitディレクトリを分けることもできますが、使用している例は多くなさそうです。

 リスト5はサンプルとしてC#コンソールアプリケーションを作業ディレクトリにコピーし、その状態をgit statusコマンドで表示したものです。

[リスト5]作業ディレクトリの状態
$ 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)。

[リスト6].gitignoreファイル
# コメント行です
*.suo
*.user
bin/
obj/

 記述方法は他のバージョン管理システムと大きな違いはありません。#で始まるコメント行や、*(アスタリスク)を使ったワイルドカード、フォルダを指定できます。再びgit statusコマンドを実行するとリスト7のように不要なファイルとフォルダが除かれていることが分かります。

[リスト7].gitignore追加後
$ git status
...
#       .gitignore
#       ConsoleApplication.csproj
#       ConsoleApplication.sln
#       Program.cs
#       Properties/

リポジトリへのファイル追加準備

 未追跡のファイルをリポジトリへ追加していきますが、いきなりファイルをリポジトリへ追加することはできません。まず、ステージングエリア(末尾参照)と呼ばれるコミット前の準備場所に登録する必要があります。この操作には、git addコマンドを使用します(リスト8)。ただし、ファイルを追加するという意味のaddではなく、ステージングエリアに登録するという意味でのaddです。誤解しやすい部分なので注意してください。

[リスト8]ステージへの登録
$ 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)。

[リスト9].gitignoreファイル
$ 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が勝手に番号を認識してくれます。

[リスト10]ログの表示
$ git log
commit 1b45bec4f0f0d7fd5880457b929e902fbe545731
Author: statemachine <statemachine@example.com>
Date:   Wed Mar 20 09:17:25 2013 +0900

    初期コミット
---
$ git log 1b45               // 番号指定

次のページ
まとめ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト statemachine(statemachine)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7117 2014/04/14 18:18

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング