空のディレクトリをコミットに含めたいときは、2つのやり方があります。.gitkeep を使う方法 と、 .gitignore をおいておく方法(例えばPHPのフレームワーク Laravel で用いられている方法)です。 空のディレクトリを保持する目的で使用する .gitignore は、たいていの場合、以下のような内容になっています。 使い分けの基準 .gitkeep と .gitignore は、「空のディレクトリにファイルが追加されたときに、そのファイルを Git での管理対象に含めたいか?」という基準で、使い分けられます。 含めたい場合は .gitkeep 、含めたくない場合は .gitignore を使います。 .gitkeep を使う基準と例 .gitkeepは、「デフォルトではファイルが存在しないけれど、ファイルが追加されたら、そのファイルを Git での管理対象にしたい」場合
git init をすると、 .git と言うディレクトリが作られます。 Gitに必要なファイルは全てこのディレクトリに含まれているのですが、普段はあまり意識しない人の方が多いと思います。 今回は .git ディレクトリの中身を少し探検してみましょう。 .gitディレクトリの構成 まずは git init して .git ディレクトリを作成してみます。 .git の中身はこのようになっています。 . ├── HEAD ├── branches ├── config ├── description ├── hooks │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── fsmonitor-watchman.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │
Git のオブジェクト 最初に少しだけGitのデータ(オブジェクト)の保存方法について触れます。 オブジェクトは .git/objects/ に保存されます。 この中にリポジトリのファイルを効率的に保存します。 バージョンごとに同じファイルを重複して保存することはありません。 ファイルだけではありません。4種類のオブジェクトを保存します。 blob: Binary Large OBjecctの略で、つまりはファイルです。しかし、ファイル名は含みません。 tree: 1階層分のディレクトリの全ファイル名とファイル内容のハッシュと権限です。 commit: git commit で作られます。コミット内容とか作成者、作成日時などが含まれます。コミットハッシュやコミットSHAと呼ばれるものです。 tag: git tag で作られます。本質的には commit とあまり変わりません。 なぜ、重複
Git_ファイルの履歴を完全に削除する.md Git ファイルの履歴を完全に削除する 秘密鍵など誤ってコミットしてしまった場合に履歴を完全に削除する手順 参考:6.4 Git のさまざまなツール - 歴史の書き換え 動作確認用にブランチを作成して試す $ git checkout -b clean-key-file 動作確認用にブランチでgit filter-branchを実行 $ git filter-branch --tree-filter 'rm -f common/key/id_rsa' HEAD Rewrite 856f0bf61e41a27326cdae8f09fe708d679f596f (12/12) Ref 'refs/heads/clean-key-file' was rewritten clean-key-fileブランチでid_rsaが履歴から完全に削除されているこ
やっべ!間違えたファイルをgit pushしちゃった! この記事では誰もが一度はやらかすであろう(?)、Gitレポジトリから"ヤバい"ファイルを消し去る方法を解説します。筆者は主に趣味でプログラミングをやる際にGitを使用するため、業務等の視点から見ると、不適切な点があるかもしれません。 以下で使用している、git push -fは使い所を間違えると非常に危険なコマンドです。なぜ危険なのかわかるまでは使わないほうが無難だと思います。どうしても使わないとならないときは、仕事ならGitのエキスパートが身近にいると思うので、その人に助言を求めましょう。 対象となる事例 この記事は、以下のような種類の情報を含んだファイルを、コミット&プッシュしてしまった人が、Gitレポジトリから過去にさかのぼって削除する方法についてまとめました。 秘密鍵 パスワード 個人情報 etc... 対象でない事例 以下の
仕事で必要になったので、ファイルを履歴ごと消す方法を試してみました。 ファイルを消しても履歴は残っている 例えば、1GB のバイナリファイルを Commit & Push したとします。 そして、それを git rm で削除したとしてもリポジトリの容量は減りません。 なぜか? git rm は「ファイルが削除されたことにするコマンド」であって、「Git リポジトリ内に保存されている履歴を消すコマンド」ではないからです。 このサイトに書かれていますが、Git は「差分」ではなく「スナップショット」を保存して、「どのスナップショットを参照するのか?」をコミット単位ごとに切り替える仕組みです。 git rm は、この「どのスナップショットを参照するのか?」という情報を削除するコマンドです。 もし、データを丸ごと消したいのであれば、保存されている全ての「スナップショット」を消さなければなりません。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く