94

Git LFS でビデオ ファイルを保存したプロジェクトがあります。ここで、Git LFS をまだサポートしていないビルド サーバーでいくつかの問題に遭遇しました。これは外部サービスであるため、ビルド プロセスに実際に影響を与えることはできないため、ファイルを Git LFS の下から「通常の」Git に戻したいと考えています。でファイルの種類を追跡できませんでしたgit lfs untrack '<file-type>'git lfs ls-files、以前に追加されたファイルのリストが表示されます。

ファイルを削除し、変更をプッシュしてから手動で再追加できると思いますが、これは本当に推奨される方法ですか?

4

6 に答える 6

34

問題 641は同じ問題に言及しています。

git lfs uninitGit LFS の使用を停止しようとしましたが、git lfs untrack,を使用して以前に追跡されたポインター ファイルを元に戻す方法が見つかりませんでしたgit rm... これらのファイルを元に戻した後も、Git LFS によって追跡されているようにリストされます。Git LFSgit lfs ls-files全体をオプトアウトするにはどうすればよいですか?私のレポからのもの?

答えは次のとおりです。

  1. すべての filter.lfs.* git config エントリを削除しますgit lfs uninit
  2. ファイルの種類ごと.gitattributesに実行するか、これまでに使用したことが LFS だけの場合は削除して、lfs フィルターを使用する属性をすべてクリアします。git lfs untrack.gitattributes

この後、追加されたファイルはすべて git に直接送られます。

しかし、これはそれほど単純ではありませんでした:

.git/lfsその後、作業ディレクトリに LFS ポインター ファイルが作成され、それらのポインターに格納されている sha1 ハッシュを手動で使用して、すべての写真を復元する必要があります。


2016 年 3 月の更新、問題 957は、次の方法で可能な解決策を示していますtstephens619

私はgit lfs追跡リストにいくつかの小さなグラフィック形式を含めるという同じ過ちを犯しました.
次のようにして、このファイルを git に戻すことができました。

  • によって現在追跡されているすべてのファイルのリストを作成しgit-lfs、フィルターで除外します*.gz(*.rpmこれらの拡張子を引き続き追跡したいgit-lfs)

    git lfs ls-files | grep -vE "\.gz|\.rpm$" | cut -d ' ' -f 3 > ~/temp/lfs-files.txt
    
  • 小さなグラフィック ファイルの追跡を停止する

    git lfs untrack "*.tts"
    git lfs untrack "*.bfx"
    git lfs untrack "*.ttf"
    git lfs untrack "*.xcf"
    git lfs untrack "*.pkm"
    git lfs untrack "*.png"
    
  • 一時的に uninit するgit-lfs

    git lfs uninit
    # Git LFS 2.x+
    git lfs uninstall
    
  • ファイル リストを使用して、各ファイルに触れます。

    cat ~/temp/lfs-files.txt | xargs touch
    

git status各ファイルが変更済みとして表示されるようになりました

  • 変更を git index に追加します (私は 経由でこれを行いましたgit gui)

  • 変更をコミットしてから、git-lfs を再初期化します

    git commit
    git lfs init
    

メンテナttaylorrは次のように付け加えます。

これを行う1つの方法は次のとおりです。

for file in $FILES_TO_REVERT; do
  git lfs untrack "$file";
  git rm --cached "$file";
  git add --force "$file";
done

git commit -m "..."

Git および Git LFS によって提供される磁器コマンドを使用すると、さまざまな方法で可能であるため、上記の効果のために Git LFS にコマンドを追加しないことをお勧めします。

于 2016-01-28T14:27:13.037 に答える