この記事を書くきっかけ
Webアプリケーションをデプロイした後も、何度もファイルを修正してきました。主に、VSCodeのソース管理やSourceTreeを利用してきました。でも、いちいちVSCodeやSourceTreeを開かなくても、コマンドラインで直感的にコミット履歴やステータスを確認できたら良いですよね。
というわけで、今回はGitで現在のファイルの状態や変更箇所を確認する方法を勉強します。また、Gitで管理したくないファイルを設定するファイル(.gitignore)についても併せて勉強します。
現在の状態の確認
コミットの情報を確認する方法
コマンド | 内容 |
---|---|
git log | コミット履歴を確認する |
git log --oneline | コミットメッセージだけを表示する |
git log -1 | 直近から1件だけコミットログを表示する |
git log -2 | 直近から2件だけコミットログを表示する |
git log -p | ファイルの差分を確認できる |
git log
を実行すると、以下の情報が表示されます。
- コミットのSHA値(ハッシュ値)
- コミットの実行者(ユーザー名とメールアドレス)
- コミットを行った日時
- コミット実行時に記載したコメント
コミットしていないファイルがあるか確認する方法
コマンド | 内容 |
---|---|
git status | ローカルリポジトリの状態を確認する |
git status -s | ステータスをシンプルな形式で表示する |
git status
コマンドの後に表示されるのは、以下の通りです。
- Untracked files:
- 一度も登録されていない、新規に追加したファイルを表示します。Untrackedとは、追跡されていないという意味です。
- Changes to be committed:
- ステージングエリアに仮登録されているファイルが表示されます。
- Changes not staged for commit:
- 変更済み(modified)のファイルが表示されます。
- nothing to commit, working tree crean
- すべてコミットされて、変更済みのファイル(Unmodified)がないときに表示されます。
変更箇所を確認
ファイルの修正前と修正後の違いを差分といいます。ファイルをうまく修正したと思っても、自分の意図しない変更や間違いがある場合もあります。そこで、差分を確認し、自分の思った変更になっているかを確認します。
コマンド | 内容 |
---|---|
git diff | ①ワーキングディレクトリと②ステージングエリアを比較する |
git diff --cached | ②ステージングエリアと③最新コミットを比較する |
git diff HEAD | ①ワーキングディレクトリと③最新コミットを比較する |
Gitで管理しないファイルを設定
Gitでは、管理すべきではないファイルというものが存在します。例えば、アプリをビルドするときに自動作成されるファイル、WindowsやMacのOSのファイル、パスワードが書かれたファイルなどです。
Gitで管理するには不要なファイルや他人に知られては困るファイルは、当然Gitに登録しないようするべきです。リモートリポジトリで共有してメンバーに見られても大丈夫なのか、コミットする前に確認するべきです。
Gitで管理しないファイルの設定方法(.gitignore)
.gitignoreファイルというテキストファイルに無視したいファイル名やディレクトリ名を書き、それをローカルリポジトリに配置することで、Gitで管理しないファイルを設定できます。テキストファイルに書くだけで、Gitが勝手に無視してくれます。
.gitignoreファイルは、そのファイルが配置されたディレクトリ配下のパスにしか効果がありません。ローカルリポジトリ内の全てのディレクトリに設定を反映するには「.git」ディレクトリと同じディレクトリに.gitignoreを保存するようにしましょう。
Gitで管理する必要のないファイルついて、GitHubが.gitignoreファイルのテンプレートを公開しているそうです。自分用にPython.gitignoreを見てみましたがと、思ったより多くてびっくりしてます。
.gitignoreの一例
- /node_modules または /packages のコンテンツなどの、依存関係のキャッシュ
- コンパイルされたコード (.o、.pyc、および .class ファイルなど)
- ビルド出力ディレクトリ (/bin、/out、または /target など)
- 実行時に生成されるファイル (.log、.lock、または .tmp など)
- 非表示のシステムファイル (.DS_Store または Thumbs.db など)
- .idea/workspace.xml などの個人用 IDE 設定ファイル
まとめ
今回は、Gitで現在の状態や変更箇所を確認する方法(diff,log)と.gitignoreについて勉強しました。git status
やgit log
はよく使いそうです。
以前、Webアプリを作成したときに.gitignoreファイルを作成しましたが、もう一度見直してみると、登録していたのはパスワードの書かれた「.env」ファイルと「.pyc」ファイルのみでした。自分のWebアプリのバージョン管理をSourceTreeで見てみると、余計なファイルがたくさんあって、なんだかごちゃごちゃとしていました。macOSの「.DS_Store」ファイルや「.log」ファイルも.gitignoreに設定する方がいいと学んだので、早速自分の.gitignoreファイルを修正しました。
こうしてみると、SourceTreeは、どのファイルをGitで管理しているのかを視覚的に確認できて便利です。Gitのようなコマンド操作するCUIなサービスと、SourceTreeようなGUIのサービスを自然に使い分けることができたらとてもかっこいいですね。