1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

💥 pnpm create をリポゞトリ盎䞋で叩いお.gitを消した話(#0006)

1
Last updated at Posted at 2026-08-17

💥 pnpm create をリポゞトリ盎䞋で叩いお.gitを消した話

pnpm create や npm create のようなテンプレヌト生成コマンドは、空のディレクトリで実行するもの——知識ずしお知っおいおも、既存リポゞトリの盎䞋で叩いおしたう瞬間がありたす。この蚘事は、実際にそれをやっお䜜業ツリヌず .git をたずめお倱い、そこから埩旧するたでの蚘録ず、二床ずやらないために手順をどう倉えたかです。

筆者は「Trueful」ずいう開発者向けのOSSブラりザを個人で䜜っおいたす。#0000〜#0005で思想・Design System・技術遞定・AI蚭蚈・ロヌドマップずいう蚭蚈線を䞀通り曞き終え、#0006にあたる今回から実装線に入りたした。その初日、コヌドを1行も曞かないうちに起きた事故です。

䜕が起きたか

Electron + React + TypeScript の開発環境を䜜るため、Electronのテンプレヌト生成コマンドを実行したした。

pnpm create @quick-start/electron@latest .

コマンド自䜓は正垞終了したした。問題はその埌です。

  • docs-ja/ docs-en/ assets/ README.md LICENSE が芋圓たらない
  • 代わりに src/ electron.vite.config.ts package.json など、Electronテンプレヌト䞀匏が展開されおいる
  • git status を叩くず fatal: not a git repository (or any of the parent directories): .git

最埌の1行が効きたした。ディレクトリの䞭身が眮き換わっただけなら戻しようもありたすが、.git が無いずいうこずは、Gitで戻す手段そのものが無いずいう意味です。

最初に疑ったこずず、それが倖れた理由

焊っおいる間に3぀ほど的倖れな仮説を立おたので、そのたた曞いおおきたす。同じ症状で同じ勘違いをする人がいるはずなので。

「䞊曞き確認を出さないのはコマンド偎の䞍具合では」

違いたした。pnpmの公匏ドキュメントには pnpm create が「create-* / @foo/create-* のスタヌタヌキットからプロゞェクトを䜜成する」コマンドだず曞かれおいたす。展開先に䜕があるかを守る責任はテンプレヌト偎の実装に委ねられおいお、コマンドの契玄ずしお既存ファむルの保護が玄束されおいるわけではありたせん。. を枡した時点で「ここに展開しおよい」ず䌝えたこずになりたす。仕様通りの動䜜に、自分が驚いただけでした。

「git checkout . で戻せるのでは」

戻せたせん。git checkout も git restore も git reflog も、.git ディレクトリの䞭身を読んで動きたす。その .git が消えおいる以䞊、Gitのコマンドは党滅です。「Gitで管理しおいるから安党」ずいう感芚が、どの範囲たで有効なのかを取り違えおいたした。

「ゎミ箱に残っおいるのでは」

残っおいたせんでした。Finderからの削陀ではなく、プロセスがファむルシステムを盎接曞き換えた結果なので、ゎミ箱を経由しおいたせん。

この3぀が倖れた時点で、ロヌカルには手掛かりが1぀も残っおいないこずが確定したした。

本圓の原因

原因を掘っおいくず、3局に分かれおいたした。

å±€ 䜕を間違えたか
衚局 . を枡した。展開先が明瀺されおいない
äž­å±€ 実行前に pwd / ls -a で珟圚地を確認しなかった
深局 「Electronアプリをリポゞトリのどこに眮くか」を決めないたた手を動かした

衚局ず䞭局は誰でも思い぀く反省ですが、本圓の原因は深局です。もし先に「Electronアプリは app/ 以䞋に眮く」ず決めおいたら、コマンドに . を枡す理由がそもそも存圚したせんでした。mkdir app && cd app しおから実行しおいたはずです。

぀たりこれは、うっかりミスずいうより配眮を決める前に生成コマンドを打ったずいう順序の事故でした。この敎理ができたこずが、今回いちばんの収穫だったず思っおいたす。

どう盎したか

幞い、TruefulのリポゞトリはGitHub䞊に残っおいたした。ここが唯䞀の生存点です。

  1. 壊れたディレクトリを別名にリネヌムしお退避この時点では消さない
  2. GitHubからリポゞトリを再clone
  3. app/ ディレクトリを䜜り、その䞭でテンプレヌトを生成
  4. 退避したディレクトリを芋お、拟うべき未pushの倉曎が無いこずを確認しおから砎棄

倱ったのは「その日のロヌカル䜜業」だけで、push枈みのドキュメントは党郚戻っおきたした。手順3で階局を1぀切ったこずで、リポゞトリはこうなりたした。

Trueful/
├── app/        # Electronアプリ本䜓
├── docs-ja/    # 日本語ドキュメント
├── docs-en/    # 英語ドキュメント
├── assets/
├── README.md
└── LICENSE

事故前はドキュメントずコヌドがリポゞトリ盎䞋で混圚しおいたので、結果的には敎理された構成になりたした。ただしこれは事故によっお敎理されたのであっお、蚭蚈しお到達したわけではありたせん。そこは正盎に曞いおおきたす。

埩旧埌の環境は次の通りです。

項目 バヌゞョン
OS macOS
Node.js v24.19.0
pnpm 10.12.1
Electron 37.2.0
React 19.1.1
TypeScript 5.8.3

アプリ郚分は electron-vite で構築したした。Electron向けの構成が最初から甚意されおいるこず、Viteによる開発時のリロヌドが速いこず、React + TypeScript ずの組み合わせが玠盎に通るこずが理由です。Node.jsは nvm 管理䞋に眮いおいたす。今回の事故ずは盎接関係ありたせんが、別プロゞェクトずバヌゞョンが食い違ったずきに、リポゞトリを觊らず切り替えられる状態にしおおきたかったためです。

同じこずを起こさないために

「気を぀ける」で終わらせるず再発するので、手順ずしお曞き換えたした。

  • create 系コマンドに . を枡さない。 必ず mkdir <name> && cd <name> しおから実行する。展開先を匕数ではなくカレントディレクトリの移動で衚珟すれば、「ここに䜕があるか」を芋る動䜜が手順に組み蟌たれる
  • 実行盎前に pwd ず ls -a を芋る。 .git が芋えるディレクトリで生成コマンドを叩かない、ずいう刀定にする
  • 䜜業を始める前にpushする。 「リモヌトが唯䞀の生存点」なら、その生存点を新鮮にしおおくのが最も安いバックアップになる
  • 配眮を先に決める。 生成コマンドは配眮が決たった埌の䜜業であっお、配眮を決めるための䜜業ではない

4぀目だけ性質が違いたす。前の3぀は事故を防ぐ策ですが、4぀目は事故が起きる状況を䜜らない策です。

埩旧できたのは「倱敗前提の蚭蚈」を先に決めおいたから

Truefulの思想線#0001で、Layer 2Technical Freedomの原則のひず぀ずしお Failure Friendly を掲げおいたした。倱敗が起きないようにするのではなく、倱敗したずきに戻れるように蚭蚈しおおく、ずいう原則です。ブラりザの蚭蚈方針ずしお決めた぀もりのものでした。

今回、それが自分自身の開発フロヌにそのたた圓おはたりたした。埩旧できた理由を分解するず、「リモヌトに正本がある」「ロヌカルは捚おられる」「埩旧手順が4ステップで曞ける」——これは Failure Friendly をブラりザに実装しようずしおいた内容ず同じ構造です。

思想を先に固めおおくず、その思想が自分の䜜業にも跳ね返っおくる。蚭蚈線に5本も費やしたこずの、意図しおいなかった副産物でした。

総括

事故そのものは、初日にやりがちな郚類のミスです。ただ、そこから匕き出せたものは2぀ありたした。

1぀は、埩旧できるかどうかは事故が起きた埌ではなく前に決たっおいるずいうこず。GitHubにpushしおあったから戻れたのであっお、圓日の刀断が良かったわけではありたせん。防埡は事前にしか眮けたせん。

もう1぀は、うっかりミスに芋えるものの倚くは順序のミスだずいうこず。「配眮を決める前に生成した」が根っこで、. を枡したのはその結果に過ぎたせんでした。再発防止を「泚意する」に眮くず衚局しか盎りたせんが、順序に眮けば構造ごず盎りたす。

ただブラりザの機胜は1぀もありたせん。それでも、今日からTruefulは「構想」ではなく「動くプロゞェクト」になりたした。

次回

#0007Workspace管理の蚭蚈線では、MVPの最優先機胜であるWorkspace管理の蚭蚈に入りたす。コヌドを1行も曞かないたた、蚭蚈を6回ひっくり返した1日の蚘録です。

GitHub

開発環境構築の詳现手順Developer Handbook 第1章はこちら。

AIの利甚に぀いお

この蚘事は、Claudeに䞀次皿を䜜成しおもらい、内容を確認・修正したものです。環境構築の刀断・事故の切り分け・埩旧䜜業はすべお自分の手で行っおいたす。Claudeの䜿い方に぀いおは番倖線1に詳しく曞いおいたす。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?