2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[git] fsck と cat-file で なくしたファイルを探す

Last updated at Posted at 2018-10-24

dangling なファイルを探す機会があったのでメモします。

dangling なファイルとは、Git データベースに存在するのに使われていないファイルのことです。fsck--no-reflogs オプションをつけない場合は、reflog からたどれるファイルも考慮されます。

# dangling なファイルのオブジェクト ID (SHA1 ハッシュ) を出力
git fsck --no-progress |grep blob |sed -Ee 's/.* blob //' >.git/dangling.txt
# 一つずつ less に出力される
cat .git/dangling.txt |while read LINE || [ -n "$LINE" ]; do { echo -e "$LINE\n"; git cat-file -p $LINE; } |less; done

上記のコマンドを実行すると一つずつ less に出力されるので q を押して次、次、次と、目的のファイルを探します。

ファイルを間違えて reset してしまいましたが、幸いにも一度 add していたので Git データベースには残っていて、これで見つけることができました。

参考文献

2
4
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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?