2011-08-03 11 views
1

私は、次の別名があります。394個のgitコミットがプリフェッチされているとHEAD〜394が機能しないのはなぜですか?

unpushed== !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && 
    git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline 

私は|wc -lでこれを実行すると、それは私が394回のunpushedコミットを持っていることを私に告げます。 私はgit diff somecommitid HEAD~394を実行するためにこの番号を使用します。 これは、次のエラーで失敗します。不思議な

fatal: ambiguous argument 'HEAD~394': unknown revision or path not in the working tree. 

、それは右の別のクローンで数358まで、私はgit showはHEAD〜411まで仕事して、失敗を含め478のコミット、およびgitのコマンドを持って動作します。すべての手がかりは? Debian Linuxでgit 1.7.5.2を使用しています。

答えて

1

私が考えることができる最も良い説明は、~演算子が分岐を辿らないということです。最初の親だけが含まれています。最後にプッシュされたコミットを参照する場合は、origin/$GIT_CURRENT_BRANCHを使用してください。

+0

私はあなたをフォローしていません。あなたはフォローしていません。私の未処理のcomandは、現在のブランチを使用してコミットの数を取得しています。 git diffまたはgit showコマンドでorigin/$ GIT_CURRENT_BRANCHをどのように使用しますか? – user561638

+0

また、私はプッシュされていないコミットを見ています。 – user561638

+0

もう1つのデータ。 git unpushedコマンドでリストアップされた最後のバージョンのgit show sha1を実行することができます。そのため、私のクローンでアクセスできます。 – user561638

0

リモートブランチとリモートブランチの共通祖先(ローカル祖先がHEAD〜394トリックを使用して探しているコミット)の差分を確認するには、これを取得する必要がありますmerge-baseサブコマンドを使用して共通の祖先を指定します。次に、あなたが使用して差分を見ることができます:枝を発散する場合、両方の枝が分岐する場合は、原点/ $ GIT_CURRENT_BRANCHが、また$ GIT_CURRENT_BRANCH

の祖先であるとき

git diff $(git merge-base $GIT_CURRENT_BRANCH origin/$GIT_CURRENT_BRANCH) $GIT_CURRENT_BRANCH 

コマンドは、両方のケースで動作します

git diff $(git merge-base $GIT_CURRENT_BRANCH origin/$GIT_CURRENT_BRANCH) origin/$GIT_CURRENT_BRANCH 
+0

私が見たいと思っているのは、非公開のコミットのすべてのファイルの差分です。共通の祖先のバージョンは394番目のバージョンと一致しません。 – user561638

関連する問題