Pages

Thursday, December 6, 2012

Gitでよくする失敗(間違ってファイルを追加してしまった場合)


私がよくやってしまう失敗、自分が次回から忘れないためにも、記録しておきたいと思う。

失敗1 git add .を.gitignoreファイルを作成する前に行なっていまう

なぜこれは、良くないのでしょうか?

それは、無視して欲しいファイルやディレクトリを書いた.gitignoreをaddした後に足しても、.gitignore内に書かれているファイルはすでにインデックス化されていて、次のコミットに入ってしまっているから。
さて、場合によっては、git add .で足したファイルをインデックスから削除したくなるでしょう。
そのようなときは、次の失敗2を御覧ください。

教訓
gitのローカルレポジトリを作成して、それから、addする前にかならず.gitignoreは最初から作っておきましょう

失敗 2 フォルダ内のファイルすべてを追加して、追加する必要がないゴミがあることに気がつく


一番最初にgitレポジトリをローカルで作ってから、すべてのファイルを追加して。。。。あっ、余計なものまで追加してしまったと後悔すること。例えば画像ファイルとか。


クライアント側では要するに以下のような動作をしてしまう。

cd /programmingpapa/project_folder
git init
git add.

そして、余計な画像ファイルが入っていたとしよう。
調べてみると、追加してしまったファイルを取り除くためには
git resetを使えると見つけた。
なので、
git reset (取り除きたいファイル名)
とやってみると
fatal: Failed to resolve 'HEAD' as a valid ref.
というエラーが出てきた
その理由はというと、一度も未だコミットしていないからのようだ。
その場合は
git rm --cached (取り除きたいファイル名)
とすることで解決することができる
git statusと打って、ファイルがインデックスから取り除かれたことを確認しよう。

もしも、追加したすべてのファイルを取り除きたい場合は
(git add . の反対)以下のコマンドを試してみてください。

git rm -r --cached .

以下のstackoverflowの質疑応答は非常に役に立ちました。
http://stackoverflow.com/questions/348170/undo-git-add-before-commit

No comments:

Post a Comment