23

私は比較的 git に不慣れで、この問題に直面しています。git push コマンドで以下のエラーが表示されます。私がやろうとしていたことを最初から説明します。サブモジュールを作成し、コミットしてプッシュしました。プッシュは以下のエラーをスローします。

Salman@PC_HOME ~/git/breakit-web-app (master)
$ git push origin master
error: refs/heads/master does not point to a valid object!
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 421 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: bb/acl: salmanmanekia is allowed. accepted payload.
error: Ref refs/heads/master is at 6a47a0fd398610a75bdab8976f842dc0efd89f86 but expected 00000000000000000000000000000000000000000
remote: error: failed to lock refs/heads/master

To ssh://git@bitbucket.org/majuri/breakit-web-app.git
 ! [remote rejected] master -> master (failed to lock)
error: failed to push some refs to 'ssh://git@bitbucket.org/majuri/breakit-web-app.git'

スクリーンショットは次のとおりです。 ここに画像の説明を入力

その後、いくつかの解決策を試しましたが、どれもうまくいきませんでした。また、私が試したことを簡単に説明します。

1: bitbucket リポジトリから、ダングリング コミットがいくつかあることに気付きました (図 2 の赤い矢印)。そのため、次のコマンドを使用して、git gc と git prune を解決しました。

2: git revert HEAD や git push origin HEAD --force などのコマンドも試しましたが、どれも機能していないようです。 ここに画像の説明を入力

その他の詳細:

$ git rev-parse --symbolic-full-name master
refs/heads/master

$ git rev-parse master
0da090c5cbde10ff19602a2722ae05231c30dff5

$ git show-ref master
0da090c5cbde10ff19602a2722ae05231c30dff5 refs/heads/master
6a47a0fd398610a75bdab8976f842dc0efd89f86 refs/remotes/origin/master

ありがとうございました

4

3 に答える 3

31

git が認識している HEAD を更新する必要があります。それはあなたにとって透明になります。

  1. master支店に行く

    git checkout master
    
  2. リモートからローカル リポジトリに更新を取得する

    git fetch
    
  3. マージの代わりにリベースを使用してローカル リポジトリを更新します。との違いを参照してくださいgit pullgit rebase

    git rebase origin/master
    
  4. masterブランチをプッシュする

    git push origin master:master
    
于 2016-05-30T12:13:41.690 に答える