Просмотр файла в другой ветке Git без изменения веток

620

Можно ли открыть файл в ветке git, не проверяя эту ветку? Как?

По сути, я хочу иметь возможность открывать файл в моей ветке github pages, не переключая ветки все время. Я не хочу его изменять, просто хочу его просмотреть.

Schneems
источник
15
Во всех ответах пропущен тот факт, что вам необходимо указать полный путь к файлу git show: stackoverflow.com/questions/610208/… и stackoverflow.com/questions/2364147/…
VonC
15
В эти дни вы можете использовать, git show a1b35:./file.txtчтобы использовать относительные пути.
Стив Беннетт
2
@VonC - слава богу, что вкладка с
Люк
более интересным может быть показ различийgit diff <other_branch> <path>
Славомир Ленарт
Пример относительного файла выше с "a1b35", то есть именем ветви - поэтому, конечно, поместите туда свое собственное имя ветви.
LoneRanger

Ответы:

877

Это должно работать:

git show branch:file

Где ответвление может быть любым ref (branch, tag, HEAD, ...), а file - полный путь к файлу. Для экспорта вы можете использовать

git show branch:file > exported_file

Вы также должны посмотреть ответы VonC на некоторые связанные вопросы:

ОБНОВЛЕНИЕ 2015-01-19:

В настоящее время вы можете использовать относительные пути с git show a1b35:./file.txt.

заболонники
источник
22
И вы также можете открыть файл в vim :( git show branch:file | vim -Обратите внимание на трубу "|" и завершающую черту после команды vim:vim -
Грег Бургхардт
3
@GregBurghardt то, что работает для меня, похоже наvim -c "set syntax=html" -
Raphaëλ
2
Хотелось бы, чтобы я честно проголосовал за этот ответ несколько раз.
Винсент Фурмонд
2
Это показывает только локальные ветви, оно НЕ показывает все ветви на сервере
William Entriken
3
@FullDecent, я смог origin/my_remote_branchнормально с этим справиться . Или вы имеете в виду реальную версию сервера? Если вы хотите этого, вам просто нужно git fetchсначала.
rsmith54
53
git show somebranch:path/to/your/file

Вы также можете сделать несколько файлов и объединить их:

git show branchA~10:fileA branchB^^:fileB

Вам не нужно указывать полный путь к файлу, допустимы относительные пути, например:

git show branchA~10:../src/hello.c

Если вы хотите получить файл в локальном каталоге (вернуть только один файл), вы можете оформить заказ:

git checkout somebranch^^^ -- path/to/file
Адам Димитрук
источник
38

Простой, удобный для новичков способ просмотра файла: он git gui browser <branch>позволяет вам исследовать содержимое любого файла.

Это также есть в меню Файл git gui. Большинство других - более продвинутых - оболочек GUI (Qgit, Egit и т. Д.) Также предлагают просмотр / открытие файлов.

Ингер
источник
В результате этой команды "git: 'gui' не является командой git. См." Git --help ". Я новичок; что происходит?
Скотт Биггс
2
Это на самом деле работает (к моему удивлению), см. Git-scm.com/docs/git-gui - я использую git версии 2.5.2.windows.1
anhoppe
Этот ответ был очень полезным! Спасибо. Следует отметить, что я использую Git Bash на Windows.
слияние
Можно ли использовать рейнджер в качестве git gui?
августа
1
@ScottBiggs вы не новичок, вы используете нестандартные настройки.
Ашнур
20

Если вы используете Emacs, вы можете напечатать, C-x v ~чтобы увидеть другую ревизию файла, который вы редактируете в настоящее время (все теги, ветки и хэши работают).

legoscia
источник
Есть ли способ получить это в Vim? (Я открыт для плагинов.)
NHDaly
4

Добавьте следующее в ваш ~/.gitconfigфайл

[alias]
  cat = "!git show \"$1:$2\" #"

А потом попробуй это

git cat BRANCHNAME FILEPATH

Лично я предпочитаю отдельные параметры без двоеточия. Почему? Этот выбор отражает параметры checkoutкоманды, которые я обычно использую довольно часто, и я нахожу, что это намного легче запомнить, чем параметр команды, разделенный двоеточием show.

akuhn
источник
Это гораздо более запоминающимся, спасибо.
Путешественник