ソースコードを少し操作した後、通常のことをコミットしてから、リモートリポジトリにプッシュしました。しかし、ソースコードでインポートを整理するのを忘れていることに気づきました。だから私は前のコミットを置き換えるために修正コマンドを実行します:
> git commit --amend
残念ながら、コミットをリポジトリにプッシュバックすることはできません。これは次のように拒否されます:
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
私は何をすべきか?(リモートリポジトリにアクセスできます。)
私は実際に一度リポジトリをプッシュして--force
、.git
Linus BIGTIMEに叱られました。一般的に、これは他の人々に多くの問題を引き起こします。簡単な答えは「やらないで」です。
とにかく他の人がそうするためのレシピを与えたのを見るので、ここではそれらを繰り返しません。ただし、-force(または+ master)を使用して修正されたコミットをプッシュした後、状況から回復するためのヒントを次に示します。
git reflog
して、修正した古いコミットを検索します(これを呼び出しold
ますnew
。修正によって作成した新しいコミットを呼び出します)。old
してnew
、ツリー記録new
などを、git checkout new && git merge -s ours old
。git merge master
git push . HEAD:master
次に、不幸なことに、修正してプッシュを強制することで消去したコミットに基づいて作業を行った人は、結果として得られるマージで、あなたが優先new
することがわかりますold
。彼らの後にマージは、間の競合は表示されませんold
とnew
、彼らが苦しむする必要はありませんので、あなたの改正によるものです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加