Git チュートリアル - Git ワークフロー

Jinku Hu 2023年1月3日 2018年7月19日
  1. git add
  2. git commit
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"
注意!
他のチームメンバーまたは他のブランチには、そのコミットに基づいたバージョンがあるため、最新のコミットではないコミットを修正しないでください。修正後、彼らは基準点を失い、そこから回復することは困難です。
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn