5

HEAD ポインターを以前のコミットにリセットしたかった

$ git reset --hard HEAD~1

HEAD は前のコミットに移動しましたが、元のマスターにプッシュできません

$git push origin master

! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'https://github.com/username/repo.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
    hint: before pushing again.

ポインターを移動して Git に変更を更新するように指示するにはどうすればよいですか?

4

2 に答える 2

7

デフォルトでは、Gitでは、サーバーの履歴に最新の変更がない変更をプッシュすることはできません。これは、他の誰かがあなたの前のHEADをすでに引っ張っている場合の問題を回避するためです。次に、子孫ではないものをプッシュすると、新しいコミットにマージまたはリベースする必要があります。

他の誰もあなたのリポジトリを使用していないことを知っている場合、または使用しているすべての人と通信している場合は、変更を強制的にプッシュできます。

git push -f origin master

一部のサーバーは、強制的な更新を許可しないように構成されています。そうでない場合は、ブランチを削除して再作成することで回避できる可能性があります。

git push origin :master
git push origin master

ただし、他の誰もあなたの作業に基づいて作業を行っていないことがわかっている場合にのみ、これらを実行してください。または、他のすべての人に連絡して、ローカルリポジトリの前のコミットに適切にリセットされるようにすることができます。

于 2012-11-12T23:18:38.187 に答える
0

リモートでのコミットが失われるため、プッシュを強制するようにgitに指示する必要があります。これは安全メカニズムであるため、誤って作業を消去することはありません。また、を発行するだけgit pushで、一部のコミットを消去するブランチを除いて、追跡用に設定されたすべてのブランチがリモートで更新される便利な機能です。

于 2012-11-13T02:28:30.677 に答える