gitに対する不安・恐怖と、要因と対処

  • リポジトリを壊してしまうのではないか?

原理的にあり得ない。変更不可完全追記式ストレージだから。

  • ラベルを壊してしまうのではないか?

これはあり得る。ブランチラベルを削除すると、参照先オブジェクトが見つけにくくなる。が、オブジェクト自体は存在する。git log や git grep で探せる。

detached HEAD は、無名(参照するラベルがない)コミットをカレントにするが、それだけのこと。

  • チェックアウトで、ワーキングツリーにあるファイルが上書き/削除されるのではないか?

チェックアウトを強制するとあり得る。ファイル単位のリストアでも上書きは起こり得る。が、警告はされる。ワーキングツリーをクリーンにしてからチェックアウト〈スイッチ〉するのが吉。スタッシュもある。

  • コンフリクトが起きるのではないか?

起きる。仕方ない。コンフリクトを減らす工夫は運用の問題で、原理やソフトウェアの問題ではない。

  • コンフリクトの解消が大変なのではないか?

大変かも知れない。コンフリクトの規模を小さくするのも運用の問題で、原理やソフトウェアの問題ではない。

  • なにかマズイものをコミットしてしまっても消せないのではないか?

原則消せない。が、新しいコミットを追加したり、ラベルからの参照(参照先は可変)をいじることにより見えにくくすることはできる。通常、見えない(見えにくい)なら十分。

機密情報や巨大バイナリを入れてしまったときは、ほんとに消す必要があるが、これは大変。専用ツールもある。リポジトリが公開されていて、機密情報入りの状態でクローンされていれば、時すでに遅し。機密情報の側で対処(パスワードの変更など)をしなくてはならない。エライことだ。

  • 機密情報が入ってしまうようなリスクがあるなら、リポジトリを公開しない。
  • 公開リポジトリに機密情報が入ってしまったら、機密情報の気密性を事後的に無効化するしかない。
  • 無効化するまでのあいだに悪用される危険性はある。