Gitで最初の2つのコミットを押しつぶしますか?

kch

これによりgit rebase --interactive <commit>、任意の数のコミットを1つにまとめることができます。

コミットを最初のコミットに押しつぶしたくない限り、それはすべて素晴らしいことです。それは不可能のようです。

それを達成する方法はありますか?


中程度の関連:

関連する質問で、私は最初のコミットに対して押しつぶす必要性に対する別のアプローチを思いつくことができました。それは、まあ、それを2番目のコミットにすることです。

興味がある場合:git:最初にコミットを挿入し、他のすべてをシフトする方法は?

VonC

2012年7月の更新(git 1.7.12 +

これで、すべてのコミットをrootまでリベースし、2番目のコミットY選択して最初のコミットで押しつぶすことができますX

git rebase -i --root master

pick sha1 X
squash sha1 Y
pick sha1 Z
git rebase [-i] --root $tip

このコマンドを使用して、「$tipからルートコミットまでのすべての履歴を書き換えることができるようになりました

参照してくださいGitHubの上df5df20c1308f936ea542c86df1e9c6974168472コミットからクリス・ウェッブ(arachsys


元の回答(2009年2月)

SOの質問「gitリポジトリの最初の2つのコミットをどのように組み合わせるのですか?で、そのためのさまざまなレシピが見つかると思います。

Charles Baileyが最も詳細な回答を提供し、コミットは完全なツリーであることを思い出させました(以前の状態との相違だけではありません)。
そして、ここでは、古いコミット(「初期コミット」)と新しいコミット(押しつぶしの結果)に共通の祖先がありません。
つまりcommit --amend、最初のコミットを新しいコミットに」してから、新しい最初のコミットにリベースして、前の最初のコミットの履歴をリベースすることはできません(多くの競合)

(その最後の文はもはや真実ではありませんgit rebase -i --root <aBranch>

むしろ(A元の「最初のコミット」でB、後続のコミットを最初のコミットに押しつぶす必要がありました):

  1. 最初のコミットを形成する最後のコミットに戻ります(HEADをデタッチします)。

    git checkout <sha1_for_B>
    
  2. ブランチポインタを最初のコミットにリセットしますが、インデックスと作業ツリーはそのままにします。

    git reset --soft <sha1_for_A>
    
  3. 'B'のツリーを使用して最初のツリーを修正します。

    git commit --amend
    
  4. この新しい初期コミットに一時的にタグを付けます(または、新しいコミットsha1を手動で覚えておくことができます)。

    git tag tmp
    
  5. 元のブランチに戻ります(この例ではマスターを想定しています)。

    git checkout master
    
  6. Bの後のすべてのコミットを新しい初期コミットに再生します。

    git rebase --onto tmp <sha1_for_B>
    
  7. 一時タグを削除します。

    git tag -d tmp
    

このように、 " rebase --onto"は、最後のコミット()の作成され履歴を最初のコミット(BだったA)にtmp(押しつぶされた新しい最初のコミットを表す)にリベースするため、マージ中に競合が発生しません:些細な早送りマージのみ。

これは「A-B」だけでなく「A-...-...-...-B」でも機能します(この方法で、任意の数のコミットを最初のコミットに押しつぶすことができます)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Gitで最初の2つのコミットを押しつぶしますか?

分類Dev

Gitで最初の2つのコミットを押しつぶしますか?

分類Dev

最初のリーフまでコミットを押しつぶす2つのコミット

分類Dev

ソースツリーで2つ以上のコミットを押しつぶしますか?

分類Dev

押しつぶされたコミットのコミットの1つを元に戻しますか?

分類Dev

1行を使用して、gitで2つの連続しないコミットを押しつぶすにはどうすればよいですか?

分類Dev

すべてのgitコミットを1つに押しつぶす方法は?

分類Dev

Git:2つのコミット間のすべてのコミットを1つのコミットに押しつぶす方法

分類Dev

git rebasemasterを使用してコミットを押しつぶす最良の方法

分類Dev

7つのプッシュされたコミットをgitで1対1に押しつぶす方法は?

分類Dev

Gitを使用して最後のXコミットを一緒に押しつぶします

分類Dev

どうすればgitでコミットを押しつぶすことができますか?

分類Dev

git format-patchを使用してコミットを1つのパッチにどのように押しつぶしますか?

分類Dev

git format-patchを使用してコミットを1つのパッチにどのように押しつぶしますか?

分類Dev

送信されたPRで_otherpeoples_ gitコミットを押しつぶすことはできますか?

分類Dev

Git:最新のコミットではなく、ルートから開始されない連続したコミットを押しつぶす

分類Dev

インタラクティブなリベースなしで、歴史の真ん中で2つのGitコミットを押しつぶす

分類Dev

他のブランチからのコミットを押しつぶしても安全ですか

分類Dev

gitは、作成者によるすべての分散コミットを1つのコミットに押しつぶします

分類Dev

gitは、作成者によるすべての分散コミットを1つのコミットに押しつぶします

分類Dev

Git InteractiveRebase-コミットの順序と選択/押しつぶす順序

分類Dev

多数のコミットを非対話的に押しつぶす方法はありますか?

分類Dev

2つの連続しないコミットを押しつぶすにはどうすればよいですか?

分類Dev

約6kのコミットを1つに押しつぶす

分類Dev

後で押しつぶすためにコミットを保持します

分類Dev

マージコミットを通常のコミットで押しつぶす方法は?

分類Dev

'SVN'には、gitのようにコミットを押しつぶすメカニズムがありますか?

分類Dev

PRでいくつかのコミットを押しつぶしてから、マスターにリベースするのは問題ですか?

分類Dev

機能を押しつぶすためのGitエイリアス-ブランチコミット

Related 関連記事

  1. 1

    Gitで最初の2つのコミットを押しつぶしますか?

  2. 2

    Gitで最初の2つのコミットを押しつぶしますか?

  3. 3

    最初のリーフまでコミットを押しつぶす2つのコミット

  4. 4

    ソースツリーで2つ以上のコミットを押しつぶしますか?

  5. 5

    押しつぶされたコミットのコミットの1つを元に戻しますか?

  6. 6

    1行を使用して、gitで2つの連続しないコミットを押しつぶすにはどうすればよいですか?

  7. 7

    すべてのgitコミットを1つに押しつぶす方法は?

  8. 8

    Git:2つのコミット間のすべてのコミットを1つのコミットに押しつぶす方法

  9. 9

    git rebasemasterを使用してコミットを押しつぶす最良の方法

  10. 10

    7つのプッシュされたコミットをgitで1対1に押しつぶす方法は?

  11. 11

    Gitを使用して最後のXコミットを一緒に押しつぶします

  12. 12

    どうすればgitでコミットを押しつぶすことができますか?

  13. 13

    git format-patchを使用してコミットを1つのパッチにどのように押しつぶしますか?

  14. 14

    git format-patchを使用してコミットを1つのパッチにどのように押しつぶしますか?

  15. 15

    送信されたPRで_otherpeoples_ gitコミットを押しつぶすことはできますか?

  16. 16

    Git:最新のコミットではなく、ルートから開始されない連続したコミットを押しつぶす

  17. 17

    インタラクティブなリベースなしで、歴史の真ん中で2つのGitコミットを押しつぶす

  18. 18

    他のブランチからのコミットを押しつぶしても安全ですか

  19. 19

    gitは、作成者によるすべての分散コミットを1つのコミットに押しつぶします

  20. 20

    gitは、作成者によるすべての分散コミットを1つのコミットに押しつぶします

  21. 21

    Git InteractiveRebase-コミットの順序と選択/押しつぶす順序

  22. 22

    多数のコミットを非対話的に押しつぶす方法はありますか?

  23. 23

    2つの連続しないコミットを押しつぶすにはどうすればよいですか?

  24. 24

    約6kのコミットを1つに押しつぶす

  25. 25

    後で押しつぶすためにコミットを保持します

  26. 26

    マージコミットを通常のコミットで押しつぶす方法は?

  27. 27

    'SVN'には、gitのようにコミットを押しつぶすメカニズムがありますか?

  28. 28

    PRでいくつかのコミットを押しつぶしてから、マスターにリベースするのは問題ですか?

  29. 29

    機能を押しつぶすためのGitエイリアス-ブランチコミット

ホットタグ

アーカイブ