[解決済み] Git pull - smudge filter lfs に失敗しました。
質問
Github から私たちのサーバーにコードを取り込もうとしているのですが (
git pull origin master
).
これは以前は動作していました。しかし、今は、以下のようなエラーが発生します。
$ git pull origin master
From github.com:org-name/repo-name
* branch master -> FETCH_HEAD
Updating 8024663e..e458e5c1
fatal: path/to/file.msi: smudge filter lfs failed
で同じコマンドを実行したところ
GIT_TRACE=1
:
$ GIT_TRACE=1 git pull origin master
19:25:26.331064 git.c:371 trace: built-in: git 'pull' 'origin' 'master'
19:25:26.333947 run-command.c:350 trace: run_command: 'fetch' '--update-head-ok' 'origin' 'master'
19:25:26.334661 exec_cmd.c:116 trace: exec: 'git' 'fetch' '--update-head-ok' 'origin' 'master'
19:25:26.337625 git.c:371 trace: built-in: git 'fetch' '--update-head-ok' 'origin' 'master'
19:25:26.344457 run-command.c:350 trace: run_command: 'ssh' '[email protected]' 'git-upload-pack '\''org-name/repo-name.git'\'''
19:25:26.925565 run-command.c:350 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
19:25:26.937016 run-command.c:350 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
19:25:26.937833 exec_cmd.c:116 trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
19:25:26.941292 git.c:371 trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
From github.com:org-name/repo-name
* branch master -> FETCH_HEAD
19:25:26.994717 run-command.c:1130 run_processes_parallel: preparing to run up to 1 tasks
19:25:26.994880 run-command.c:1162 run_processes_parallel: done
19:25:26.995780 run-command.c:350 trace: run_command: 'gc' '--auto'
19:25:26.996735 exec_cmd.c:116 trace: exec: 'git' 'gc' '--auto'
19:25:27.000596 git.c:371 trace: built-in: git 'gc' '--auto'
19:25:27.002716 run-command.c:350 trace: run_command: 'merge' 'FETCH_HEAD'
19:25:27.003445 exec_cmd.c:116 trace: exec: 'git' 'merge' 'FETCH_HEAD'
19:25:27.006078 git.c:371 trace: built-in: git 'merge' 'FETCH_HEAD'
Updating 8024663e..e458e5c1
19:25:27.420945 run-command.c:350 trace: run_command: 'git-lfs filter-process'
19:25:27.470865 run-command.c:209 trace: exec: '/bin/sh' '-c' 'git-lfs filter-process' 'git-lfs filter-process'
trace git-lfs: run_command: 'git' version
trace git-lfs: run_command: 'git' config -l
trace git-lfs: Initialize filter-process
trace git-lfs: Read filter-process request.
trace git-lfs: Read filter-process request.
fatal: path/to/file.msi: smudge filter lfs failed
19:25:27.998635 run-command.c:42 trace: run_command: running exit handler for pid 18022
sshの認証情報が正しいことを確認しました。
$ ssh -T [email protected]
Hi user-name! You've successfully authenticated, but GitHub does not provide shell access.
そして、実際、クレデンシャルが大丈夫なのは
pull
を降ろすと
.gitattributes
ファイル(私が行った他の小さなファイルの変更と一緒に)。
file.msi filter=lfs diff=lfs merge=lfs -text
Git LFSが正しく設定されているように見えることを確認しました。
$ git config -l
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
...
私はこれを見つけた Githubイシュー で、3つのステップをすべて試しました。
$ echo "protocol=https\nhost=github.com" | git credential fill
$ echo "protocol=https\nhost=github.com" | git credential fill | git credential reject
$ echo "protocol=https\nhost=github.com" | git credential fill | git credential approve
最初のステップでユーザー名を聞かれました。ということは、書いてある通り、Git LFSが何かをキャッシュしているようには見えません。
私はGit LFSの経験があまりなく、正直なところ、この問題にどうアプローチしたらいいのかアイデアがありません。
最近行った行動で、何かを壊したかもしれないものが2つあります。
-
あるユーザーをリポジトリから削除しました。サーバーのsshキーはそのユーザーのものでした。デプロイメントキーを追加しましたが
Git LFS はデプロイメントキーをサポートしていなかった
(最近サポートが追加されたようですが)。そこで、ユーザーキーに変更しました。どちらのキーも確認したところ
ssh -T [email protected]
をテストしています。それでも、もしかしたら、認証に問題があるのでは? - Git LFSのないサーバーにリポジトリをプルダウンしました。そのときは気づかなかったのですが、ファイルは問題なく移行先のサーバーに転送されました。しかし、おそらくこれでリポジトリの何かが壊れたのではないでしょうか?
何かお手伝いできることがあれば、ぜひお願いします。
PS - 私の匿名化によって混乱を招いたのなら、申し訳ありません。実際のIPアドレスは
X.X.X.X
組織名は
org-name
私たちのレポ名は
repo-name
Github ユーザーは
user-name
ファイル名は
file.msi
その他、いくつかあります。
EDIT 5/16/17: 以前は動作していたこと...そして私がそれを壊したことを明確にするための文言を追加しました。
解決するには?
私の場合、SSH認証されたリポジトリが他のクライアントからLFSを使うように更新され、私の側のGit-LFSはSSHリモートURLを知らなかったのです。それを解決するためにやったことは以下の通りです。
で設定したURLをコピーして
remote.origin.url
(プッシュURLは
origin
から
lfs.url
(LFSが使用するURL)を指定します。
$ git config lfs.url $(git config remote.origin.url)
(リモートの名前が
origin
に変更します)。
次に、以下を実行します。
$ git config lfs.url
をクリックして URL を表示し、それが HTTP/HTTPS の url ではなく、本当に SSH の url を含んでいることを確認します。
その後
$ git pull
完了です。
もし
前に失敗して
master
そして
orgin/master
が、私のように何らかの形で分岐している場合は
git checkout -fB master origin/master
(これは問わないし
はローカル版のmasterブランチを上書きします。
ということで
注意深く実行すること
!).
こちらもご覧ください。 https://github.com/git-lfs/git-lfs/issues/2661#issuecomment-335903332
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] git stashを元に戻す
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?