0

そのため、github でプロジェクトをフォークしましたが、最初に「プル」を行う必要がある「プッシュ」コマンドでエラーが発生したため、ローカルの変更をオリジン リポジトリにプッシュできませんでした。問題は、「プル」がすべてのローカル コミットを上書きし続けることです。

以下に例を示します。

github にプロジェクト A (リモート = アップストリーム) があり、それを自分のプロジェクト (リモート = オリジン) にフォークしました。次に、ブランチ「branch_a」を作成して、すべてのパッチの変更を追加し、このブランチをリモートのオリジン リポジトリにプッシュしました。このプロセス全体を複数のコミットで失敗させてしまったので、プル リクエストを送信して変更をプロジェクト A に送信するために、コミットを 1 つにまとめる必要がありました。

git rebase -i アップストリーム/マスター

4 つのコミットを見て、必要なものを選択し、他のコミットを削除しました

git push オリジン branch_a

受信したエラー:

! [拒否] branch_a -> branch_a (non-fast-forward) エラー: 一部の参照を 'https://github.com/#####/#####.git' にプッシュできませんでしたhistory、非早送り更新が拒否されました 再度プッシュする前に、リモートの変更 (「git pull」など) をマージしてください。詳細については、「git push --help」の「早送りに関する注意」セクションを参照してください。

プル コマンドを実行します。

git pull オリジン branch_a

受信したメッセージ:

  • branch branch_a -> FETCH_HEAD 再帰によるマージ。libpex/インストール | 364 ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++ 1 ファイル変更、364 挿入 (+)、0 削除 (-) 作成モード 100644 libpex/INSTALL

プル コマンドによって完全に上書きされたローカル コミット (このファイルを約 10 回削除しようとしましたが、何度も削除されます)。

だから今、私は再び4つのコミットをすることに戻りました。私の人生では、正しいコミットを元のレポにプッシュすることはできません。これについて何ができますか?

4

1 に答える 1

1

持っているものをプッシュして宛先にあるものを上書きするようにGitに指示したい場合(これは履歴を破壊する可能性があるため、慎重に使用し--forceてください)、pushステートメントに入力します。

git push --force origin branch_a

これにより、早送りであるかどうかに関係なく、ブランチが origin/branch_aローカルブランチを指すように更新されます。ローカルブランチまたは他のリモートブランチからも到達できないコミットは、リモートリポジトリで失われます。branch_aorigin/branch_abranch_a

于 2012-10-03T15:39:57.053 に答える