Git-lfsの使用方法を理解しようとしています。 gitlab EEサーバーを使用しています。
たぶん何かを見逃したかもしれませんが、「track」コマンドとかわいい1分間のビデオを紹介する非常に短いチュートリアルを超えて、git-lfsに関するドキュメントを見つけることができませんでした。
たとえば、3.7GBのtarファイルをレポに追加して追跡し、プッシュします。
git lfs track "*.tar"
cp <a folder>/a.tar .
git add a.tar
git commit -m "add a.tar"
git Push Origin master
質問1:このプロセスの最後に、gitlabサーバーにa.tarがアップロードされましたか? 「追加」コマンドと「コミット」コマンドに時間がかかったため(3.7GBがその間にアップロードされたのかどうか疑問に思うほど長くはなかったかもしれません)、Pushにはまったく時間がかかりませんでした2番目)。
質問2:ファイルがサーバーにアップロードされた場合、どこに?明らかにレポと同じ場所ではありません(それがポイントです)。私のサーバーはバックアップされているので尋ねました。git-lfsを使用するために何らかの方法でこれを更新する必要があるかどうかを知る必要があります。
質問:ファイルがアップロードされなかった場合、これはリポジトリの他のユーザーがファイルが追加された元のマシン上のファイルへのリンクを取得することを意味しますか?これをサーバー上の場所に変更する方法はありますか? (質問2に戻る)
質問4:レポのクローンを作成した後、実際には完全な3.4Gファイルが存在せず、コンテンツを含むテキストファイルが「ただ」:
version https://git-lfs.github.com/spec/v1
oid sha256:4bd049d85f06029d28bd94eae6da2b6eb69c0b2d25bac8c30ac1b156672c4082
size 3771098624
これはもちろん素晴らしいことであり、全体のポイントです。しかし、ファイル全体へのアクセスが必要な場合はどうでしょうか?それをダウンロードするには?
この質問への直接的な回答か、適切なドキュメントへのリンクのどちらかで満足しています。
回答1このビデオ (1:27)で説明したように、git lfs
で追跡されたファイルをプッシュすると、インターセプトされます別のサーバーに配置し、gitリポジトリにポインターを残します。質問4で提供するリファレンスをご覧ください。
Answer 2これはもう少し注意が必要です。 git lfs smudge
のドキュメントを読むと、次のことがわかります。
Git LFSポインターファイルを標準入力から読み取り、対応する大きなファイルの内容を標準出力に書き込みます。必要に応じて、Git LFSエンドポイントからファイルのコンテンツをダウンロードします。引数が指定されている場合、進行状況バーにのみ使用されます。
git lfs
エンドポイントは、git lfs env
の出力から見つけることができます。私の「エンドポイント」は、リポジトリの下(ではなく)のフォルダーです。これにより、GitLabは、バイナリファイルを保存するために、アカウントスペースのサーバーにgitリポジトリを作成すると思います。
とはいえ、これをどのようにバックアップするのかわかりません。 GitHubは git lfs
server を提供します。これは「実稼働準備状態ではない」ため、管理するサーバーにバイナリファイルがアップロードされるように設定するには、一部の作業が必要です。これらのファイルのバックアップが優先事項であり、 実装 (Amazon S3など)のいずれかを使用したくない場合は、git-media
など、gitで動作する別のバイナリファイルストレージシステムを試すことができます、git-annex
、git-fat
、git-bigstore
....これらのオプションについて詳しく調べたことがないため、推奨できませんでした。
回答3ファイルがgit lfs
を使用してアップロードされなかった場合、git
を使用してプッシュされ、バイナリファイルがgitリポジトリ。しかし、あなたが質問4で言うようにgit lfs
を使用してアップロードされました。
Answer 4ローカルマシンにgit lfs
をインストールした後、リポジトリの他のユーザーは、単にgit lfs pull
と入力して、バイナリファイルを取り込むことができます。 git lfs
を使用してプッシュされます。