Git チュートリアル - Git ワークフロー
先ほど学習したように、ファイルの追加またはコミットは基本的に 2 段階のプロセスです。
-
git add
ファイルをステージング領域に追加します。以下のコマンドのように、
$ git add test1.txt
作業コピーからステージング領域に
file1.txt
が追加され、リポジトリにコミットする準備が整います。ファイルを作成するときはいつでも、作業コピー上にあり、ローカルコンピューター上にあり、git add
コマンドの後、ステージング領域に移動します。 -
git commit
ステージング領域からすべてのファイルを取得して、リポジトリにプッシュします。
$ git commit -m "commit message"
通常、ファイルまたはプロジェクトで変更した内容など、このコミットの内容を説明するメッセージを追加します。したがって、将来このコミットのログ情報を取得できます。
git add
ファイルを変更して保存した後、コンピューター上のこのファイルは、リポジトリー内のファイルとは異なります。これは、リポジトリーでは、この変更前の内容と同じであるためです。git status
と入力すると、Git がファイルが更新されたことを知っていることがわかります。
$ 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: test1.txt
no changes added to commit (use "git add" and/or "git commit -a")
Git で示唆されているように、git add
を使用して、コミットされるファイルを更新します。
$ git add test1.txt
これで、この更新されたファイルをステージング領域からリポジトリにコミットできます。
場合によっては、複数のファイルを更新しましたが、もちろんこの方法でファイルを追加できますが、
$ git add test1.txt test2.txt test3.txt
しかし、大量のファイルがある場合、またはファイル名が長すぎる場合、大きな頭痛の種になります。Git には、すべての更新されたファイルと追跡されていないファイルをステージング領域に追加するショートカットがあります。
$ git add .
ここで、.
はリポジトリとは異なるすべてのファイルを意味します。
git commit
Git の他の機能を導入したときに、 git commit
の使用方法を示しました。基本的に、git commit
はステージング領域をリポジトリにプッシュします。この特定のコミットで変更した内容を説明するコミットメッセージを追加することを強くお勧めします。git log
コマンドですべてのコミットログ情報を取得できます。
リポジトリに直接コミットする
コミットする前に、ステージング領域に変更を追加する必要があります。その後、それらをコミットできます。しかし、実際にステージング領域に追加する必要はありません。まず、最終プロジェクト、リポジトリ、またはサーバーでこれらの変更が必要であることを知っているため、全員がファイルを更新できます。
したがって、最初に git status
をチェックすることで、作業コピーで何が変更されたかを知ることができます。それから、これらの変更をステージング領域に追加する前に、git commit
を直接使用できます。
$ git commit -a -m "commit message here."
ここでは、ステージング領域に追加する代わりにショートカットを使用しています。しかし、これは特定の状況でのみ役立ちます。このコマンドを使用するときは常に、作業コピーのすべてを取得してリポジトリに直接プッシュするため、注意が必要です。
コミットを修正する
コミット後に状況が発生した可能性がありますが、コードにタイプミスやその他の小さな欠陥が見つかりました。もちろん、コードを修正して、リポジトリに変更を再度コミットすることもできます。しかし、私たちにできることは、この最新のコミットを書き換えることであり、最新のコミットは新しい変更で書き換えられます。
git commit
に続くフラグ --amend
は、このコミットが作業ブランチに存在しない以前のコミットを置き換えることを Git に伝えます。
$ git commit --amend -m "new information is updated"