17

物語:

デスクトップとラップトップの両方で RoR アプリを開発しています。別のサーバーで行われた変更をコミットし、それらを github にプッシュし、別のサーバーでフェッチしてマージするのは非常に便利でした。

出発点は次のとおりです。デスクトップで最新の変更をコミットし、それらを github にプッシュしてから、フェッチしてラップトップにマージしました。次に、ラップトップでいくつかのコミットを行い、github にプッシュしました。変更を取り、デスクトップにマージしました (--no-ff を使用)。次に、すべてのいたずらの可能性のある原因が起こりました。デスクトップを元に戻して、最新のフェッチとマージの前の場所にコミットしました。それを使っていくつかの開発作業を行い、コミットし、github にプッシュしました。ラップトップでも元に戻しましたが、github からの最新のフェッチの間のどこかで行われたコミットに戻し、再度フェッチしてそれらをマージしました。デスクトップとラップトップの両方を元に戻した後にいくつかのエラーメッセージが表示されましたが、それでもかなりうまく機能し、両方のマシンで作業を続けました。

今まで。ラップトップから github にプッシュしようとしましたが、次の出力が得られました。

 Counting objects: 106, done.
 error: unable to find 5a2a4ac...
 error: unable to find bc36923...
 error: unable to find ecb0d86... 
 error: unable to find f76d194...
 error: unable to find f899df7...
 Compressing objects: 100% (64/64), done.
 fatal: failed to read object 5a2a4ac... : Invalid argument
 error: failed to push some refs to 'git@github:username/repo.git'

では、問題は、ここで正確に何が起こったのかということです。

編集:ラップトップを一時停止して、その状態で場所から場所へ移動したため、何らかの形でハードドライブが台無しになったようです。問題を回避して作業を続けたため、fsck の出力は利用できませんが、IIRC の一部のブランチとコミットは、git が読み取れなかったコミットを含め、ぶら下がっていました。- ティーム

4

2 に答える 2

5

このような問題に遭遇しました。

これらの問題を解決して修正するために何時間も費やすのではなく、私の「解決策」は通常、必要なコードを取得して新しいディレクトリにコピーし、.git ファイルを削除してから新しい github を作成し、2 つを接続することです。いつものように。

これはあなたが提起した詳細に対する具体的な回答ではないかもしれませんが、git/github の問題が発生する可能性がある多くの方法がある可能性があり、私が今「git の専門家」であることを望むのではなく (実際に起こっていますが、時間がかかります) )、上記を実行して、実際のアプリケーション開発を続けます。

于 2011-11-01T12:31:32.837 に答える
1

問題は、「ツリー」の一部ではないオブジェクトを読み取ろうとしていることです。それらは存在しますが、孤立しています。ただし、git を使用すると、あるプロジェクトを別のプロジェクトにマージできるため、次のように、最初からやり直すことなくコミットを保持できる 1 つの方法です。

  1. git remote add -f somename git://somegitplace.com/user/some.git

  2. git merge -s ours --no-commit somename/master

  3. git read-tree --prefix=ext/somename -u somename/master

  4. git commit -m '外部マージ'

  5. git pull -s サブツリー somename マスター

それが役立つことを願っています。そうでない場合はお知らせください。もう一度攻撃できます

于 2011-11-08T12:57:29.887 に答える