2016-08-09 16 views
3

私は自分のコードでテストを実行するとき、常にgit(stash createを使用)のコードのスナップショットを取ってテストにコミットIDを付けますガーベジコレクションされないようにするためにreflogに書いてください)。この方法で、私は後で、そのテスト出力にどのようなコードがつながっているかを簡単に確認することができます。2つの異なる親コミットを持つ2つのコミット間の差異

しかし、しばしば、その古いコードと現在のバージョンのコードを比較したいと思います。問題は、現在のバージョンのコードがmasterブランチにリベースされているためです。git diffは何百ものコミットを組み合わせて表示します。私が現在行っているのは、2つのgitショーの後に通常の(非gitの)diffがあるのですが、この行番号が異なるすべての行でこの行番号が異なるとみなされるという大きな欠点があります。

2番目のコミットがリベースされたときに2つのコミット間でdiffを実行する簡単な方法はありますか?だから、基本的には、最初のコミットを内部的にリベースし、diffを表示して、そのコミットの内部リベースバージョンを取り除くのと同じようなものを探しています。もちろん、リベースが失敗した場合もそうですが、ほとんどの場合、リベースは単に私のために働くので、これはまだほとんどの場合役に立ちます。

私はこれを自分で書くことができると思いますが、よくある問題のように思われるので、このようなものが既に存在するのでしょうか?

+0

いいえ、あなたが望むものが表示されません(2つではなく、3つの点に気づくでしょう) – janos

+0

いいえ、古いものの親コミット以降の現在のブランチのすべての変更を表示します(私の場合、現在の祖先です)。それで、何百ものコミットも表示されます。実際には2つの点とは異なりますが、私の状況では 'git diff old^.. current'と同じですが、これも私が望むものではありません。 – FrederikVds

+0

https://stackoverflow.com/a/28114114/2303202 – max630

答えて

0

gitでこれを直接行う方法はわかりません。

しかし、あなたが示唆したように、「背後にある」リベースを行う小さなスクリプトを書くことによって、うまくいくはずです。

ところで、私はちょうど隠し場所で作業するのではなく、タグを配置します。

最後に、この質問のタイトルを更新して、rebaseと書いてください。

+0

私はsttheを使用していません、私は 'git stash create'を使用しています。これはインデックスと作業領域の両方のスナップショットを2つのコミットの形で作成します。手動でそれらのコミットを作成してからリセットするのと同じですが、gitには既にこの組み込み関数が組み込まれています。 タグ付けはこれとは関係ありません。特定のコミットを「記憶」する方法ですが、私の問題はコミットIDを外部に保存することで既に覚えているため、記憶していないコミットを作成することでした。これはガベージコレクションを防止しますが、これは私がreflogを使用するものです。これはちょうどうまく動作し、 'test @ {1 week ago}'のようなものを許可します。 – FrederikVds

関連する問題