をリベースした後、私はスカッシュするには、いくつかのコミットをして(!しかし、それらのすべてが押しつぶさする必要がない)ログから消える:Gitリポジトリ:悪循環押しつぶしながら...コミットは
commit b1
commit b2
commit c1
commit c2
commit d1
commit m2
私はgit rebase -i HEAD~6
を入力します。
commit b1
s b2
s c1
s c2
s m2
最後に、すべての潰れたコミットでコミットが必要になった!それが必要なため
! [rejected] myBranch -> myBranch (non-fast-forward)
error: failed to push some refs to '[email protected]'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
、私はgit pull --rebase origin myBranch
を入力してると:
しかし、私は私のdevの枝(myBranch) にこれらの変更をプッシュしようとしているとき、私は次のよく知られたエラーを得ました私のコミットはgit log
から消えて、すべてが再び戻ってきた!
これを修正して、潰したコミットをdevブランチにプッシュするにはどうすればいいですか?何がここで間違っていますか?
ありがとうございます!
これらのすべてを押しつぶす必要はありませんが、リベースの指示から削除するとコミットも削除されることに気づきましたか?特に、リベースの一環としてコミット 'd1'が削除されます。 –
また、既にプッシュされているコミットを縮退/リベースしていますか?もしあなたがそうすれば 'git push'は歴史を本質的に書き直して、強制力を働かせる必要があるので不平を言うでしょうが、その結果を理解してください。 –
git pull rebaseがあなたのスカッシュコミットを取り除く理由は、新しいブランチの上であなたの仕事を "再現する"の一環として、空になり(変更を加えないで)終わるマージ/コミットが削除されることです。あなたのスカッシュコミットは本質的にブランチに含まれているものと全く同じ変更を追加するので削除されます。 –