git add・commit・pushは何が違う?AIに任せる前の確認

30秒でわかる答え

git addは記録する変更を選び、commitは手元に記録を残し、pushは別の保存先へ送ります。「保存した」と言われたら、どこまで済んだのかを分けて聞けます。

AIに文を直してもらうと、「addして、commitして、pushします」と返ってくることがあります。全部「保存」のことなのか、外へ送るのか、分かりにくいですよね。

addは次に記録する変更を選ぶこと。commitは手元に記録を残すこと。pushはその記録を別の保存先へ送ることです。 この三つを分けると、何を聞けばよいかが見えてきます。

Gitは、ファイルの変化を記録する道具です。ファイルは、文書などを名前を付けて保存したもの。ここでは、文を一か所直したときの流れで考えます。

文を直してから、相手へ送るまで

あるページの「こんにちは」を「こんばんは」に直したとします。

ファイルを直してから、別の保存先へ送るまで

  1. ここから手元の作業文を直す

    作業中のファイルが「こんばんは」に変わる。

  2. add:選ぶ

    いまの「こんばんは」を、次に記録する内容として選ぶ。

  3. commit:記録する

    選んだ内容を、手元のGitに残す。

  4. ここで送り先を更新push:送る

    その記録を別の保存先へ送り、相手側を更新する。

基本の流れを示した図です。自動処理や付ける指定による違いは、この下で確認します。GitHubなどへ送る場合、pushが手元から外へ記録を渡す段階です。

次に記録する内容を選んでおく準備場所を、ステージといいます。addしたあと、さらに文を直しても、その追加の編集が自動で選ばれるわけではありません。

たとえば、addしたあと「こんばんは」を「おやすみなさい」に直したとします。もう一度addせずに通常のcommitをすると、記録に入るのは、先に選んだ「こんばんは」です。画面に見える最新の文と、次に記録する文が違うことがあるので、記録の直前に確認します。

「直した」「選んだ」「記録した」は同じではないので、AIの報告もこの順で確かめられます。

記録する前に、どこが変わったかを見る

AIに一文だけ直してもらったのに、画像や設定まで変わっていたら、理由を聞きたいですよね。まずは、どのファイルのどこが変わったかを見ます。

説明に**差分(さぶん)**と出てきたら、変える前と後でちがうところのことです。

名前主に見ること
git status変わったファイルと、次の記録用に選んだかどうか
git diffふつうは、まだ選んでいない変更
git diff —cached次の記録に入れるために選んだ変更

git add .やgit add -Aは、まとめて選ぶ指定です。自分が別の作業で直したところまで入っていないかも聞けます。

今回はどのファイルの、どこを記録しますか。私が別に直していたところも入っていませんか。

commitは通常、選んだ内容を手元に記録します。ただし、-aなどを付けると選ぶものが変わります。記録の前後に別の作業を動かす設定もあるため、その有無も確かめます。

送るときは、場所と内容を見る

Gitの記録のまとまりをリポジトリといいます。GitHubは、その置き場所としてよく使われるサービスの一つです。

またGitでは、作業の流れを**ブランチ(枝)**に分けられます。「どこへ送るか」に加え、「どの作業の記録を送るか」も大切です。

AIへは、次のように聞けます。

どの保存先へ、どの作業の記録を送りますか。パスワードや、別の仕事のファイルは入っていませんか。送るとサイトも公開されますか。

GitHubへ送ることと、サイトを公開することは別のしくみです。ただし、送ったことを合図に自動で公開する設定もあります。「保存だけ」と思っていたなら、ここを確かめます。

--forceを付けると、送る先の記録を置きかえる場合があります。うまく送れなかったときに、理由を調べず足すものではありません。

pullは、相手の新しい記録を取りこむ

pushが送る話なら、pullは相手の新しい記録を受け取り、手元へ合わせる話です。見るだけの操作ではありません。

受け取る段階をfetch、そのあと手元へ合わせる方法をmergeやrebaseなどと呼びます。今は名前を覚えるより、取りこむと自分の作業がどうなるかを聞ければ大丈夫です。

--ff-onlyは、手元と相手で別々に進んだ記録をまとめる必要がないときだけ進める指定です。止まったら、どちらで何が変わったかを先に聞きます。

まだGitに記録していない編集はありますか。相手の記録を取りこんでも、私の作業を残せますか。

「戻す」「掃除する」は、消えるものを先に聞く

AIの説明が「元へ戻します」でも、いまの編集が残るとは限りません。

名前先に聞くこと
git restoreいつの記録から、どのファイルや選んだ内容を戻すのか
git reset —hard作業中のファイルも戻すと、どの未記録の編集が消えるのか
git cleanGitで管理していないファイルのうち、何を消すのか

cleanの-nでは、消す予定を見ることができます。ただし、-dや-xなどの指定で選ぶものが変わるため、見せてもらう予定と、実際に消すものが合っているかを確かめます。

Gitに記録していなかったファイルは、Gitから必ず元に戻せるわけではありません。「消えるものを先に教えて。必要なものは別の場所に残して」と相談できます。

「手元に記録したところ?」と聞けるようになる

文を直してaddとcommitをしたあと、まだpushしていない。ふつうの流れなら、手元に記録したところで、pushで相手を更新する作業はまだです。

AIから「保存しました」と返ってきたら、「手元の記録までですか? もう相手へ送りましたか?」と聞けます。知らない名前がほかにもあれば、コマンドの一覧で、まず何をするものかを確かめられます。

git add・commit・pushの参考資料

内容の最終確認日:

この記事について

LAB WHITEBOARD

git add・commit・pushを一文で説明してみよう

「手元の記録と外部への送信、編集を失う操作を区別する」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。