Как показать различия между некоторыми или всеми файлами? GIT

Как в теме: как показать различия между некоторыми или всеми файлами?

Жаль, что я не придумал свой вопрос. Я имел в виду различия между ветвями для одного или нескольких или всех файлов.

Ответ 1

Или, может быть, немного полезнее:

git diff <commit1> <commit2> -- path/to/file.cpp path/to/anotherfile.cpp path/to/subdir

Вы также можете (например, bash)

git diff {<commit1>,<commit2>}:path/to/file.cpp

Таким образом вы можете даже

git diff <commit1>:path/to/file.cpp <commit2>:path/to/anotherfile.cpp

который довольно безумный, ИМХО.

Замените <commit1> и <commit2> любым именем тега, веткой (локальным или удаленным) или прямым хэшем sha1 коммита (это известно как commit-ish)

Чтобы стать действительно напуганным, вы можете указать хеши дерева или хэви, если хотите. Сделайте что-то совершенно глупо с этим для образца:

$ git ls-tree HEAD^ | grep blob | sort -R | head -2
100644 blob 27785581e788049ac805fab1d75744dd7379735d    .gitignore
100644 blob 2821a5271ffd8e6b11bb26b8571f57e88ab81f38    TESTING

$ git diff --stat 2821a5271ffd8e6b11bb26b8571f57e88ab81f38 aa96765714a3058068c4425d801fab4b64e26066
 ...f38 => aa96765714a3058068c4425d801fab4b64e26066 |  155 +++++++++++++++++---
 1 files changed, 135 insertions(+), 20 deletions(-)

Теперь вы обычно этого не делаете, если у вас нет нескольких версий "того же" файла в вашем репо (что, если вы спросите меня).

Ответ 2

git diff

Покажет вам ожидающие изменения изменений нефиксированных файлов

Просмотрите документы в этой команде для разных способов, которыми вы можете использовать это, чтобы увидеть различия между файлами