Gitのコミットまでの手順をまとめました【Git】

Linux

クライアントソフトでGitを使っていますが、コマンドでも操作できるようになりたいので一連の操作をメモしておきます。

コミットまでの流れは以下の図のようなイメージです。

ワーキングディレクトリには、Gitが監視していないファイルも含め作業中のファイルがあります。
文字通り作業している領域です。

Gitにコミットするときは、ステージングエリアにコミットするファイルを移動します。ここでコミットするファイル(作業)を選別します。

選別作業が終わったらコミットメッセージをつけてコミットします。

作業内容をコミットするまでの手順

作業用ブランチを作成、切り替える

まず作業用のブランチを作成して切り替えます。

▼ブランチを作成

$ git branch <branch-name>

▼ブランチを切り替える

$ git checkout <branch-name>

ブランチの一覧はgit branchで確認できます。

この場合、mainとdevelop-test2つのブランチがあり、現在develop-testで作業している

ステータスを確認する

$ git status [-s]
//オプション[-s]ショートバージョンで表示されます

ステータスを確認すると、ファイルがどの状態にあるか確認できます。
次に実行するコマンドが記述されているので、まずここを確認して作業します。

①のステージングエリアのファイルは、文字通りステージングにあるファイルです。
この状態からコミットできます。
カッコの中に次のようなコマンドが記載されていますが、実行するとステージングからファイルを外すことができます。

ファイルをステージングから外す
(use “git restore –staged <file>…”)

②の変更されたファイルは、Gitで監視しているファイルが、変更または削除された状態を表しています。今回の場合、modified(変更)とあるので、何かしらファイルが変更されたことを表します。

こちらもカッコの中に次のようなコマンドが記載されてます。

ファイルをステージングに追加
(use “git add <file>…” to update what will be committed)

ファイルの変更を破棄
(use “git restore <file>…” to discard changes in working directory)

英語を翻訳すると、git addはファイルを①のステージングエリアに追加し、git restoreはファイルの変更を破棄する。という意味のようです。

作業したファイルをステージングエリアに追加する

ステータスを確認したらコミットするファイルをステージングエリアに移動します。

git add <file>

ファイルの指定方法

ここで、ファイルの指定方法をおさらいです。コマンドの説明にある<file>の指定方法です。
git addを例にしてみます。

▼ファイル名で指定

$ git add example.txt

▼変更・削除、新しく追加された全てのファイルを指定

$ git add -A

▼管理されている全てのファイル(新規ファイルは対象外)を指定

$ git add -u

作業ファイルをコミットする

ファイルをステージングエリアに追加したら、次のコマンドでコミットします。

$ git commit -m "コミットメッセージ"

コミットメッセージは分かりやすい一文を入力します。これを考えるのが難しい。。
これで一通りの作業は完了です。

ファイル更新以外のコミット

ファイルを更新する以外にも、削除したりファイル名を変更することがあると思います。
普通に削除してもコミットできますが、gitにコマンドが用意されているのでメモしておきます。

ファイルを削除する

ファイルを削除する場合、git rmコマンドを使うと、deleteステータスでステージングに登録されます。普通に削除するより手間が省けます。

$ git rm <file>

git rmコマンドを実行すると、削除するファイルがステージングエリアに追加されます。その時のステータスは「deleted」です。

コミットすればファイルを削除したという履歴が残り、実際にファイルも削除されます。

ファイルの名前を変更する

ファイルの名前を変更する場合、git mvコマンドを使うと、名前を変更したファイルがステージングエリアに追加されます。その時のステータスは「renamed」です。

通常のmvコマンドでも同じことができますが、元のファイル名を一旦削除し、新しいファイル名でファイルが作成されます。内部的には同じことをしているようですが、gitコマンドで名前を変更したほうが手間が少ないです。