1572

リモートの非ベア「メイン」リポジトリをセットアップし、それをコンピューターに複製しました。ローカルで変更を加え、ローカルリポジトリを更新し、変更をリモートリポジトリにプッシュしました。それまでは大丈夫でした。

今、私はリモートリポジトリで何かを変更する必要がありました。次に、ローカルリポジトリで何かを変更しました。リモートリポジトリへの変更は必要ないことに気づきました。git pushそのため、ローカルリポジトリからリモートリポジトリに移動しようとしましたが、次のようなエラーが発生しました。

履歴が失われるのを防ぐために、早送り以外の更新は拒否されました。もう一度プッシュする前に、リモートの変更をマージしてください。詳細については、の「早送りに関する注意」セクションgit push --helpを参照してください。

たぶん

git push --force

ローカルコピーに変更をリモートコピーにプッシュして同じにするように強制します。強制的に更新されますが、リモートリポジトリに戻ってコミットすると、ファイルに古い変更(メインのリモートリポジトリに以前あった変更)が含まれていることがわかります。

答えの1つへのコメントで述べたように:

[私は]強制しようとしましたが、変更を保存するためにマスターサーバーに戻ると、古いステージングが発生します。したがって、私がコミットするとき、リポジトリは同じではありません。そして、もう一度git pushを使おうとすると、同じエラーが発生します。

この問題を解決するにはどうすればよいですか?

4

9 に答える 9

2791

ただ行う:

git push origin <your_branch_name> --force

または、特定のリポジトリがある場合:

git push https://git.... --force

これにより、以前のコミットが削除され、現在のコミットがプッシュされます。

適切ではないかもしれませんが、誰かがこのページに出くわした場合、簡単な解決策が必要だと思います...

短いフラグ

また、-fは の略な--forceので注意してください。

git push origin <your_branch_name> -f

も機能します。

于 2012-09-26T21:31:33.550 に答える
24

ローカル ブランチ A にいて、ローカル ブランチ B をオリジン ブランチに強制的にプッシュしたい場合、CI は次の構文を使用できます。

git push --force origin B:C
于 2015-05-28T18:25:43.740 に答える
17

まず第一に、「メイン」リポジトリに直接変更を加えることはありません。「メイン」リポジトリが本当に必要な場合は、プッシュするだけで、直接変更しないでください。

発生しているエラーについてはgit pull、ローカル リポジトリから試してからgit push、メイン リポジトリに試しましたか? あなたが現在行っていること (私がよく理解している場合) は、プッシュを強制し、「メイン」レポでの変更を失うことです。最初にローカルで変更をマージする必要があります。

于 2011-04-01T05:42:29.793 に答える
11

私は本当にお勧めします:

つまり、メイン サーバーとローカル コンピューターの両方からベア リポジトリにアクセスできるようにして、プル/プル先の単一のアップストリーム リポジトリを作成します。

于 2011-04-01T05:53:27.647 に答える
5

これは、履歴を維持しながら、企業の gitHub リポジトリのマスターを置き換えるためのソリューションでした。

push -fブランチの履歴を維持するために、企業のリポジトリでマスターすることはしばしば無効になっています。このソリューションはうまくいきました。

git fetch desiredOrigin
git checkout -b master desiredOrigin/master // get origin master

git checkout currentBranch  // move to target branch
git merge -s ours master  // merge using ours over master
// vim will open for the commit message
git checkout master  // move to master
git merge currentBranch  // merge resolved changes into master

ブランチをプッシュdesiredOriginして PR を作成します

于 2016-05-26T21:31:51.447 に答える