Is there a way to check if a file under specified, relative path exist in a remote? I'm fine with fetching the info first if it's the only option. In other words I'm looking for git-ls-files with an option to specify remote and branch. I'm only interested if the file exists (a list of files on the branch will do as well), I don't care about hashes, diffs etc.
You can use
git cat-file -e <remote>:<filename>
which will exit with zero when the file exists. Instead of <remote>
above you'd use a remote branch name (but it could in fact be any tree-ish object reference). To use such a remote branch, you'll need to have the remote repository configured and fetched (i.e. by using git remote add
+ git fetch
).
A concrete example:
$ git cat-file -e origin/master:README && echo README exists
README exists
$ git cat-file -e origin/master:FAILME
fatal: Not a valid object name origin/master:FAILME
Two things to note:
/
as path delimiter in filenames, even on e.g. Windows.<filename>
is a full path (such as foo/bar/README
), relative to the root of the repository.