简体   繁体   中英

Git show's file path

Let's say I have a git repo for my stuffs inside a directory myapp :

myapp
    /.git
    /.gitignore
    /subdirA
        /subdirB
            /file1.txt
            /file2.txt
            /(and some other stuffs)
    /(and some other stuffs)

I want to view file1.txt from an old commit abcd123 . For another thread , I learnt that I should use something like:

$ git show abcd123:path/to/file1.txt

However, I am confused about the right path to use. I've tried something like

$ git show abcd123:myapp/subdirA/subdirB/file1.txt
$ git show abcd123:subdirA/subdirB/file1.txt
$ git show abcd123:subdirB/file1.txt
$ git show abcd123:file1.txt

but git keeps giving me error messages like

$ Path 'subdirA/subdirB/file1.txt' does not exist in 'abcd123'

How to solve this problem?

This command will generate a list of paths that exist in comment abcd123 :

git ls-tree -r --name-only abcd123

Anything you get from that command should work as a path for git show abcd123:...

Also, it's easier sometimes to use a leading ./ on the path. That automatically replaces the . with the path from the repository root to your current directory in the working tree. For example:

cd ~/my-git-repo/dir1/dir2
git show abcd123:./Makefile # equivalent to git show abcd123:dir1/dir2/Makefile

If you try git show abcd123:Makefile it doesn't work... but git does suggest ("Did you mean...?") both the version with the full path from the repository root and the version with the ./ ... unless you also have a Makefile in the root directory of abcd123 in which case you just get that with no warning that you might have wanted ./Makefile instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM