3

私は私のレポを少し混乱させました。

私はいくつかの変更を加えてレポにプッシュしましたが、今はそれを元に戻したいと思っています。(私は物事をすべて間違ってマージしました)

私のローカルマシンでは、次のコマンドでそれを行いました:

git reset --hard 72a535b

これはトリックを行ったようです。次に、変更を正しく実装し、コミットしてプッシュしようとしました。

もちろん、それはエラーで失敗しました

非 fast0forward refs/heads/master の拒否 (最初にプルする必要があります)

これはやりたくないと思います。そうすると変更が失われ、壊れた mod の最初のセットに戻ってしまうからです。

この恐ろしい混乱をどのように解決できますか?

4

2 に答える 2

7

「悪い」変更をまだ誰もプルしていないと仮定して、強制的にプッシュします。

git push -f

サーバーは通常のプッシュを拒否します。これは、サーバー側のレポの変更が失われる (混乱する) ためです。この場合、これはあなたが望んでいるように見えるので、先に進んで強制してください。履歴を失う可能性があるため、プッシュを強制することは一般的に危険なことであることに注意してください。

他のユーザーがすでに変更をプルしている場合、プッシュする前に意味のある方法で競合を解決する必要があるため、面倒になる可能性があります。そのため、プロジェクトに共同作業者がいる場合は、彼らが既にあなたのコードのコピーを入手しているかどうかを確認してください。もしそうなら、あなたがやろうとしていることについて彼らに警告し、すぐに正しいバージョンを引き出すようにしてください。利用できます。

于 2013-08-04T07:36:45.120 に答える
1

あなたの最善かつ安全な選択肢は

gitを元に戻す
OK、作成して追加のコミットを行い、悪いコミットは一生残ります。買う理由が気になる。枝のてっぺんがきれいである限り、過去の過ちを隠す必要はありません。

于 2013-08-04T08:05:21.267 に答える