4

私は git に少し慣れていませんが、彼らのサイトから Git の本を読みました。そこで、サーバーにGitLabがインストールされたものを使い始めました。

以前は SVN を扱っていたので、最初のコミットは SVN のエクスポートでした。私の友人も同じプロジェクトに取り組んでいます (彼の名前はルーカスです)。

origin/masterを完全に安定させてから /dev で開発するためにブランチorigin/devを作成しました。作業中のブランチfeature258も作成しました。私の素晴らしい機能をマージする前に、 origin/devをプルして変更を取得しようとしたとき、次のようになりました。

$ git pull origin dev
fatal: object 18c29b4c26d7b0d34719d10ada6901c6024f91e6 is corrupted
fatal: The remote end hung up unexpectedly

18c29b4オブジェクトは、.gitignore ファイルを少し変更するだけのピンク色コミット (スクリーンショットを参照) のようです。

私はgit fsck --fullを実行しましたが、私が持っている手がかりは私を助けませんでした:

$ git fsck --full
dangling blob 0c87d2eb401651ec3045eb0248d54ed546206dbe
dangling blob 1cd17aadc009ba9d39d1137533d65107ca54da95

ブロブ 0c と 1c は、feature_258 の最後のコミットで変更した 1 つのファイルにすぎません。

Google で 3 時間以上検索して、Linus Torvalds メソッドやその他の StackOverflow の投稿を見つけましたが、適切な解決策は見つかりませんでした。

それが私を救うことができれば、BADコミットの前にブランチにリベースして作業をやり直すことができるかもしれません(確かに別のディレクトリに保存しました)

SourceTree のスクリーンショット

4

1 に答える 1

1

通常これ:

fatal: The remote end hung up unexpectedly

接続の終了について通知します。たぶん (たぶん) これは Git リポジトリの問題ではなく、何らかのシステムの問題です。私があなただったら、レポでファイルのアクセス許可を確認することから始めました。gitolite を使用している場合は、次のようになります。

chown git:git -R $GITOLITE/repositories/my_repo.git/
chmod u+rw -R $GITOLITE/repositories/my_repo.git/

次に、問題がなければ、サーバーでレポを複製しようとしました:

git clone $GITOLITE/repositories/my_repo.git/ ~/test_clone.git

また、もう 1 つの提案があります。ユーザーgitとしてログインし、git のバージョンを確認してください。

于 2012-12-15T08:02:33.897 に答える