2017-11-03 14 views
0

をリベースした後、私はスカッシュするには、いくつかのコミットをして(!しかし、それらのすべてが押しつぶさする必要がない)ログから消える: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ブランチにプッシュするにはどうすればいいですか?何がここで間違っていますか?

ありがとうございます!

+0

これらのすべてを押しつぶす必要はありませんが、リベースの指示から削除するとコミットも削除されることに気づきましたか?特に、リベースの一環としてコミット 'd1'が削除されます。 –

+0

また、既にプッシュされているコミットを縮退/リベースしていますか?もしあなたがそうすれば 'git push'は歴史を本質的に書き直して、強制力を働かせる必要があるので不平を言うでしょうが、その結果を理解してください。 –

+0

git pull rebaseがあなたのスカッシュコミットを取り除く理由は、新しいブランチの上であなたの仕事を "再現する"の一環として、空になり(変更を加えないで)終わるマージ/コミットが削除されることです。あなたのスカッシュコミットは本質的にブランチに含まれているものと全く同じ変更を追加するので削除されます。 –

答えて

1

すべては問題ありません。 gitのメッセージは誤解を招く。代わりに、-fをpushコマンドに追加する必要があります。

なぜなら、gitは、(早送りプッシュの代わりに)リモートブランチヘッドを置き換えることによって、誤って履歴を失うのを防ぐためです。だからあなたはあまりにもプッシュを強制する必要があります。他の人と一緒に仕事をしている場合は、あらかじめ彼らと連絡を取り合う必要がありますが、ここで一人で働いていると思います。

関連する問題