Is it possible to open a file in a git branch without checking out that branch? How?
Essentially I want to be able to open a file in my github pages branch without switching branches all the time. I don't want to modify it, just want to view it.
git show
: stackoverflow.com/questions/610208/… and stackoverflow.com/questions/2364147/…
git show a1b35:./file.txt
to use relative paths.
git diff <other_branch> <path>
This should work:
git show branch:file
Where branch can be any ref (branch, tag, HEAD, ...) and file is the full path of the file. To export it you could use
git show branch:file > exported_file
You should also look at VonC's answers to some related questions:
How to retrieve a single file from specific revision in Git?
How to get just one file from another branch
UPDATE 2015-01-19:
Nowadays you can use relative paths with git show a1b35:./file.txt
.
git show somebranch:path/to/your/file
you can also do multiple files and have them concatenated:
git show branchA~10:fileA branchB^^:fileB
You do not have to provide the full path to the file, relative paths are acceptable e.g.:
git show branchA~10:../src/hello.c
If you want to get the file in the local directory (revert just one file) you can checkout:
git checkout somebranch^^^ -- path/to/file
/
instead of \
- even though cmd's completion will try to tell you the opposite.
A simple, newbie friendly way for looking into a file: git gui browser <branch>
which lets you explore the contents of any file.
It's also there in the File menu of git gui
. Most other -more advanced- GUI wrappers (Qgit, Egit, etc..) offer browsing/opening files as well.
If you're using Emacs, you can type C-x v ~
or M-x vc-revision-other-window
to see a different revision of the file you're currently editing (tags, branches and hashes all work).
Add the following to your ~/.gitconfig
file
[alias]
cat = "!git show \"$1:$2\" #"
And then try this
git cat BRANCHNAME FILEPATH
Personally I prefer separate parameters without a colon. Why? This choice mirrors the parameters of the checkout
command, which I tend to use rather frequently and I find it thus much easier to remember than the bizarro colon-separated parameter of the show
command.
.git/config
was saved, e.g. save config and try git cat ma[tab-tab] docke[tab-tab]
. Thx, @akuhn
Success story sharing
git show branch:file | vim -
(Notice the "|" pipe, and the trailing dash after the vim command:vim -
vim -c "set syntax=html" -
origin/my_remote_branch
fine with this. Or do you mean the actual server version? If you want that, you just need togit fetch
first.