2016-07-19 8 views
5

私は2つのブランチ、master & featureを持っています。マスターは、時々、ライブにすばやく行くために必要な小さな微調整を受け取ります。これらの調整が完了すると、masterfeatureにリベースされ、機能が最新の状態に維持されます。不良リベースの後に導入された重複コミットを削除します

マスターで変更されたファイルは一般的にfeatureの開発の大部分とは関係ありませんが、複雑な3ウェイマージの競合が多数発生しています。

コミットログfeatureを調べたところ、問題はいくつか重複していることがわかりました。対話型のリベースで解決しようとしています。

私の質問は:

ので、私はちょうど私がそれを見て期待してどのように歴史の重複を削除し、基本的に構築することができ、これは問題に最適なソリューションです、としたら?また、重複するものは落とします、より高い(元のオリジナル)か、より低い(新しい重複)。 git rebase master -iから取ら

要旨リスト:重複を削除するには

pick 0eb277c Commit A 
pick ced2556 Commit B 
pick 640e049 Commit C 
pick b248ff7 Commit D 
pick 9903094 Commit E 
pick ebc279d Commit A 
pick 313385b Commit F 
pick 0d55178 Commit G 
pick c8f09f9 Commit H 
pick e877be3 Commit I 
pick 9859aa0 Commit J 
pick c3c8e0f Commit K 
pick 8abc68c Commit L 
pick 84a5c89 Commit A 
pick 30570e4 Commit B 
pick 937ff2f Commit C 
pick 8e6d911 Commit D 
pick 1dd3a09 Commit E 
pick fe79288 Commit F 
pick 9e790bb Commit G 
pick 0924916 Commit H 
pick 90d59d7 Commit I 
pick ba06c55 Commit J 
pick 7452fad Commit K ** Dupes end here** and features then has 30+ more commits. 
pick d1dca3d Commit M 
pick 6c85f76 Commit N 
pick ad53b78 Commit O 
pick f166471 Commit P 
+1

'git rebase -i HEAD〜x'を' x'に置き換えることができます。たとえば、 'git rebase -i HEAD〜3'のように、コミットの数を指定すると、最後に3つのコミットが得られます。保存するコミットと、削除するコミットを選択できます。 –

+0

コミット0eb277cとebc279dは両方のコミットAとしてマークされていますが、明らかにそれらのsha1は異なっているため、それらは異なるコミットです。実際、sha1リストには重複したコミットはありません。 – Frodon

+0

私は、大雑把に重複を意味し、コミットメッセージは同じであり、適用されるコードは同じです。しかし、それは複製され、新しいコミットとして保存されます。 – Kiee

答えて

4

あなたはgit rebase master -iによって生成されたリストを経由して、最大移動し、ドロップダウンリストを押すと、矢印キーを使用して重複を削除する必要がありますコミットdをコミットする場合はdropにします。

master commmitハッシュまたは任意の有効な再基点に置き換えることができます)あなたはすべての重複を削除し、あなたは歴史が見えることを期待どのように見えるのリストをコミットしていたら

、終了と入力し、!wqと入力してと入力して、rebase画面にと入力します。

その後、再ベースは続行し、あなたの再ベースポイントにpick edのコミットのリストを適用します。

関連する問題