1

リポジトリの特定のリビジョンをgit checkoutafterでチェックアウトしましたgit clone(gitは、それが重要な場合は、ヘッドが切り離されていることを教えてくれます)。現在、このリビジョンは完全にはコンパイルされません。一部のリファクタリングは部分的にしか行われていないようです。後でどのような変更が行われたかを確認する必要があります。

私はもう試した

git diff origin/master -- path/to/file

しかし、それは私のファイルを完全に新しいものとして扱いました。私は次のような差分を取得します:

diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
new file mode 100644
index 0000000..19e1244
--- /dev/null
+++ b/drivers/usb/core/driver.c
(complete contents of the file follows)

それは私をまったく助けません。私もバリエーションを試しましたがgit log成功しませんでした。

理想的には、後日、ファイルに加えられた変更のすべての差分を確認したいと思います(作業コピーにあるものと比較して)。興味深いものを見つけたら、特定のリビジョンで行われたすべての変更を確認したいと思います。

注:私の場合、後のリビジョンまたはブランチをチェックアウトするだけでは機能しません。プロジェクトはデバイスごとに異なるブランチを使用しており、作業中のデバイスの最新のコミットをすでに取得しています。リファクタリングが完了した新しいコミットがありますが、必要なデバイス固有のものがすべて含まれているわけではありません。

4

2 に答える 2

1

<commit> がありません:

$ git diff -h
usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]

したがって、現在のコミット (HEAD) と将来のコミットを提供すると、デタッチされたヘッドとリモート ヘッドの間で指定されたファイルに影響を与えるすべての違いが表示されます。すなわち:

git checkout HEAD~10
git diff HEAD origin/master -- path/to/file

master の現在の位置からコミットを 10 個戻して、切り離されたヘッドを作成し、この現在のコミットと元のコミットの間でそのファイルに影響するすべての変更を表示します。もちろんgit diff HEAD~10 HEAD -- path/to/file、通常の HEAD == master の場合からとにかく実行したでしょう。

于 2013-02-07T13:27:47.360 に答える
0

" Git: How can I reconcile detached HEAD with master/origin? " のように、最初にtempdetached HEAD がある場所にブランチを作成し、次に:

git diff origin/master temp -- /path/to/file
于 2013-02-07T12:11:52.013 に答える