14

どうやってこの混乱に陥ったのかわかりません。しかしerror: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null、リポジトリをGitHubにプッシュしようとすると、問題が発生します。フルプッシュ:

[ashinn @ puppet1 puppet] $ git push
オブジェクトのカウント:27、完了。
最大2つのスレッドを使用したデルタ圧縮。
オブジェクトの圧縮:100%(11/11)、完了。
オブジェクトの書き込み:100%(16/16)、5.67 KiB、完了。
合計16(デルタ6)、再利用14(デルタ4)
エラー:オブジェクト15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:nullsha1を指すエントリが含まれています
致命的:オブジェクトのエラー
エラー:解凍に失敗しました:インデックスパックの異常終了
git@github.com:andyshinn/puppet.gitへ
 ![リモート拒否]ガングリア->ガングリア(アンパッカーエラー)
 ![リモート拒否]マスター->マスター(アンパッカーエラー)
エラー:一部の参照を「git@github.com:andyshinn/puppet.git」にプッシュできませんでした
すべてが最新です

Git ls-treeは、私のsudoモジュールがnullのsha1であることを示しています。

[ashinn @ puppet1 puppet] $ git ls-tree 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22
..。
160000コミット2cc9d02b3cf27d6a06d85612c03710aa0d90149cssh
160000コミット6961179007dce76d7fb9bd1fc361273acb4129a7stdlib
160000コミット0000000000000000000000000000000000000000sudo
040000ツリー2bd16a8fab440081a876f64d720b5b4d9d119bc9sysctl
040000ツリー01439b5a20363dccdf3f7103aab701fa7f4b3cd9テンプレート
..。

リストされているssh、、stdlibおよびsudoは、外部gitリポジトリのサブモジュールです。フォルダsysctltemplateはリポジトリ内のフォルダです。

モジュールを削除して再度追加しようとしましたが、現在コミットをプッシュできないようです。私はいくつかの検索を行いましたが、エラーについてはほとんど見つかりませんでした。このエラーを解決するにはどうすればよいですか?

4

2 に答える 2

9

私はついにこの問題を解決することができました。これが私がそれを解決するためにしたことです:

記事https://help.github.com/articles/remove-sensitive-dataには、リポジトリからファイルを削除するという見出しがあります。Rakefileを削除するための例に従いましたが、代わりに問題のあるフォルダーを使用しました。

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch modules/sudo' --prune-empty --tag-name-filter cat -- --all

問題のあるツリーはフォルダだったので-r、コマンドに追加しました。その結果、sudo modilesのすべてのコミットがクリーンアップされ、オブジェクト15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22が消えました。変更をコミットした後、プッシュは成功しました。後で問題なく壊れたモジュールを再度追加することができました。

于 2013-02-06T22:05:55.213 に答える
0

githubリポジトリ(ベア)を別のローカルディレクトリに複製してみてください。次に、これをリモートとして追加し、そのリモートにプッシュしてみます。これが失敗した場合、問題はおそらくローカルです。(これは私の推測です)

そうでない場合でも、「作業リポジトリ」のクローンを作成し、そのクローンから以前に追加したローカルリモートにプッシュしてみます。

これで問題が解決しない場合は、githubリポジトリの名前を変更/バックアップして新しいリポジトリを作成するか、githubサポートに連絡する必要があります。

于 2012-12-23T12:33:18.300 に答える