しっぽ舎
← コラム一覧

git add -A で作業中のフォルダまでコミットされた話と防ぎ方

· つくり手

日記 / 制作の記録

並行作業中に起きた10月25日の混入を振り返り、パス指定と差分確認の手順を考えます。

Git(ファイルの変更履歴を管理する仕組み)で作業リストの変更を記録するコミットに、並行で制作中のフォルダまで混ざっていました。10月25日の制作記録にある、変更範囲の混入です。対象の指定と、記録前の確認で防ぐ手順を考えます。

親リポジトリ(履歴をまとめて管理するフォルダ)で、変更全体を次の記録対象に加える git add -A を使った際、別リポジトリにする予定のフォルダが丸ごと入りました。その後、インデックス(次の記録に含める変更の置き場)から外して修正されています。

変更一覧を見る、パスを指定する、対象の差分を見る、コミットする
記録に含める範囲を先に選ぶ

git add -A は途中の変更もまとめて拾う

Git公式のgit-addの説明では、git add は次のコミットに含める内容をインデックスに追加する操作です。-A にパスを指定しなければ、作業フォルダ全体の追加・変更・削除が対象になります。

作業リストだけの更新でも、同じ場所に別の変更があれば、それも対象です。用事が別々でも、ファイルの置き場所まで分かれているとは限りません。小さな更新のつもりで全体を追加すると、制作途中のものまで一緒に入ります。

変更した内容と、含めるファイルを別々に見る

ファイルの一覧を先に見る。その後で、それぞれの差分が正しいかを確認する。この順番なら、文章の正しさとコミットの範囲を分けて確かめられます。

作業リストの文章を読んで問題がなくても、横に別のフォルダが付いていれば、コミットの範囲は違います。逆に、ファイル名が合っていても、中身に意図しない変更があるかもしれません。

変更全体は git status --short、次のコミットに含む名前は git diff --cached --name-only で確認します。追加は git add <パス> で対象を指定します。

次の手順はパス指定と、作成前のignore

制作記録には、次の手順として二つ残っています。並行作業中の git add はパスを指定すること。新しい別リポジトリを作る前に、親の .gitignore(管理対象から外すパスの一覧)へ入れることです。

パス指定は、今回含めるものを選ぶ操作です。新しく作るフォルダを親の管理対象から外すのは、別々に管理する境目を先に作る操作です。どちらも「全部入れてから不要なものを探す」より、作業の意図を表しやすくなります。

今回混ざったのは、文章を直す作業の後、コミットする段階でした。編集と、含める範囲の選択は別の作業です。途中のものを残しながら一つの更新を区切るために、次も対象をパスで指定します。

ほかの制作物は、個人で開発したアプリの作例にまとめています。

コラム一覧へ →