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


620

Чи можливо відкрити файл у гілці git, не перевіряючи цю гілку? Як?

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


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>
Lenart

Приклад відносного файлу вище з "a1b35", тобто ім'ям гілки - тому, звичайно, помістіть туди власне ім'я гілки.
loneRanger

Відповіді:


876

Це має працювати:

git show branch:file

Де гілкою може бути будь-який посилання (гілка, тег, HEAD, ...), а файл - це повний шлях до файлу. Щоб експортувати його, ви можете використовувати

git show branch:file > exported_file

Ви також повинні переглянути відповіді VonC на деякі пов'язані з цим питання:

ОНОВЛЕННЯ 2015-01-19:

Сьогодні ви можете використовувати відносні шляхи за допомогою git show a1b35:./file.txt.


22
І ви також можете відкрити файл, відкритий у vim: git show branch:file | vim -(Зверніть увагу на "|" трубу та задні тире після команди vim:vim -
Greg Burghardt

3
@GregBurghardt те, що для мене працює, є чимось схожим наvim -c "set syntax=html" -
raphaëλ

2
Я б хотів, щоб я міг підкреслити цю відповідь не раз, чесно.
Вінсент Фурмонд

2
Це показує
ТОЛЬКІ

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 ". Я новачок; що відбувається?
Scott Biggs

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.