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


620

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

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


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 ~чтобы увидеть другую ревизию файла, который вы редактируете в настоящее время (все теги, ветки и хэши работают).


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

4

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

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

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

git cat BRANCHNAME FILEPATH

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


Это гораздо более запоминающимся, спасибо.
Путешественник
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.