2

私はすでに質問を見ました

gitrebaseとgitpush:早送りではないのに、なぜ使用するのですか?

マスターブランチと「origin/master」は分岐していますが、「ブランチを分割解除する」方法は?

この特定のケースで何をする必要があるのか​​、まだはっきりしていません。最初にオリジン/マスターとマスターを同期させました。両方のコミットのシーケンスは

---o---A---B

ローカルリポジトリにさらに2つのコミットをコミットして、

---o---A---B---C---D

コミットを並べ替えたかったので、リベースを実行しました。だから私のマスターは今です:-

---o---A---C---D---B

私のオリジン/マスターはまだ最初の状況のままです。さて、git pushを実行しようとすると、masterとorigin / masterが分岐しているため、pushを拒否します。このリベースを元に戻すにはどうすればよいですか?

4

2 に答える 2

2

次の方法で強制できます。

git push -f origin master

ただし、注意してください。これは実際にはオリジンの履歴を変更しているため、たとえば、他の開発者にとって何も壊さないことがわかっている場合にのみこれを行ってください。

一般に、すでにリモート/中央リポジトリにプッシュされているコミットをリベースすることはお勧めできません。

于 2012-04-10T23:20:53.813 に答える
0

私はこれを数回経験しましたが、最初はgitが言ったようにプルしました。これは、過去の変更を新しいローカルの変更とマージしようとします-大丈夫ではありません。基本的に、ローカル リポジトリ ブランチがリモート ブランチから分岐した場合は、リモート ブランチもリベースする必要があります。例えば:

git:(branch)$ git commit -m "my fix."
git:(branch)$ git checkout master
git:(master)$ git rebase branch
git:(master)$ git rebase origin/master
git:(master)$ git push origin master

大成功!

于 2016-05-04T15:11:26.457 に答える