gitのベアリポジトリ、ノンベアリポジトリとは?

  • ベアリポジトリ(bare repository) = 作業コピーを含まないリポジトリ
  • ノンベアリポジトリ(non-bare repository) = 作業コピーを含むリポジトリ
  • ベアリポジトリは集中管理用
  • つまり、リモートリポジトリはベア、ローカルリポジトリがノンベアが基本
  • ノンベアリポジトリからもcloneすることはできる。
  • しかし、ノンベアリポジトリにpushすると通常はエラーになる。
  • 作業コピーとインデックスに不整合が生じるためである。
  • 下記コマンドを実行すればノンベアリポジトリでもpushを受け付けるようになる。
  • SourceTreeの場合、右上の「ターミナル」ボタンでターミナルを開いてコマンドを実行する。
  • ただしこれは非推奨である。一人で開発する分にはまあいいけども。
git config receive.denyCurrentBranch ignore 
  • ベアリポジトリは下記のコマンドで新規作成できる。
  • SourceTreeの場合、GUIからは作成できないのでターミナルでコマンドを実行する。
git init --bare
git clone --bare ノンベアリポジトリの場所