2012-02-14 10 views
1

Gitチェックアウトマスター〜Xを使用すると、Xthのマージされたコミットが得られます。実際には がX番目の実際のコミット(マージされていないコミットのみ)です。コミット順によるGitチェックアウト

どうすればいいですか?

ありがとうございました。

答えて

1

は、次のようなものを試してみてください:

git checkout $(git log --no-merges --skip=2 -1 --format='%H') 

変更--skip=2非マージの数にあなたが飛ばしたいコミットします。マージしない最初のコミットを使用する場合は、--skip=0を使用します。 2番目の非マージコミットは、--skip=1を使用します。 3番目は--skip=2です。など


あなたは(ガイドとしてthis answerを使用して)エイリアスを設定することができ:

git config alias.co-non-merge '!git_co_non_merge() { git checkout `git log --no-merges --skip=$(($1 - 1)) -1 --format="%H"` ; } ; git_co_non_merge' 

は、グローバルコンフィギュレーション変更にする--globalを追加します。それでは、git co-non-merge Xを使うことができます。

+0

「マージコミット」も「コミット」ですが、そうではありませんか? – nickgrim

+0

絶対に正しいです。鋭い目のおかげで。 –

0

あなたは何のマージは、単にcheckoutを行うためにX番目の結果を取り、そのリストには

git log --no-merges 

を使用してコミットされていないコミットのリストを得ることができます。

ご使用の場合は、短い表示で十分であるため、--onlineフラグを追加使用することもできます。

0

マージコミットをリベースに置き換えることができます。このarticleをチェックしてください。しかし、それは将来の支店にのみ影響します。