2012-01-13 17 views
1

を与えます私が合格すると、2 < = N < = 10の場合、10のオプションが表示されます。 N = 1の場合は、最後のコミットが表示されます。Gitは私にあまりにも多くのリベースのオプション

これは2つの質問を返す: 1.これはなぜ起こっているのですか? 2.誰でもNを3にする方法を知っていますか?それ以上のコミットには多くの葛藤があり、私はそれに対して反対したくありません。

文脈の一部: 私はgitの "機能ブランチ"を持っています。これは、いくつかのレガシーコードをMac上でローカルで動作させるためのパッチです。それはまだ生産中の古代のDrupalのインストールに関するいくつかの問題に対処しています。私はローカルで開発するためにそれにパッチを当てていました。そして、コミットのためにそれを再レイアウトして、ステージング環境でテストできるようにしました。それはうまくいきました...今まで。

+1

そこにマージコミットはありましたか? – Cascabel

+0

'git show-branch'の出力は何ですか? –

答えて

3

あなたが見ているキーは、リビジョンの実際の動作と、リビジョン指定子~です。 私はこのツリー構造とどのように~http://schacon.github.com/git/git-rev-parse.html#_specifying_revisionsから動くかに関する情報を得ました。

この履歴グラフは、Jon Loeligerによるイラストです。双方は、ノードB及びCをコミットするコミットノードAの親コミットが左から右へ順序付けられる:

G H I J 
\/ \/
    D E F 
    \ |/\ 
    \ |/ | 
    \|/ | 
     B  C 
     \ /
     \/
     A 

Iが供給ページが示すように、~は祖父母が最初であろう第N祖父母を指すの親であります任意のマージの親。あなたがHEAD - >Aのブランチにいて、Gを指すリビジョンとしてHEAD~3と指定した場合。

したがってrebase -i HEAD~3は、GからAオンタップGに対話的にすべてのコミットをリベースするとします。つまり、rebaseプロセスの一部として他のすべてのコミットが表示されるため、D,B、およびAの代わりに、A-FH-Jがリベースリストに追加されます。それはリストされた8つの異なるコミットになります。

+0

チェックしたらどういう意味ですか?私がリベースを理解する限り、-i HEAD〜3は、HEADから到達可能な全てのコミットを列挙しますが、HEAD〜3からは到達できません。 –

+0

何を確認していますか?あなたが 'checkins'を意味したら、私は'コミット 'と言わなければなりません。 (私はそれを変更します)。 HEAD〜3はHEADの第3の祖父母への参照にすぎず、マージがあれば各マージの最初の親を選択します。 rebase操作は、結合されたブランチ上のコミットを含むすべてのコミットをそのHEAD〜3からHEADに持ちます。 – James

+0

はい、私はチェックインを意味します。いい答えだ。ありがとうございました –

関連する問題