I often need to run certain git commands (usually git log) on files in many different repositories. I would like a way for git to automatically run commands such as

git log --oneline /full/path/to/file/in/other/repo

in the following manner:

git -C /full/path/to/file/in/other log --oneline /full/path/to/file/in/other/repo

without having to type -C /full/path/to/file/in/other or changing directory manually. I would like git to infer from the full path what repository the file is in.

  • 1
    If the other repo (e.g. .git folder) resides in /full/path/to/file/in/other, your usage of the -C parameter appears to be correct. What problems are you running into with it? – mlhDev Jan 22 '19 at 13:18
  • The command works, I would like a way to not have to type -C /full/path/to/file/in/other whenever I happen to be in another repository. – NicestPerson Jan 22 '19 at 13:31
  • Well you need to somehow tell Git which repository to use. Like a wrapper script or shell aliases or whatever. They’d have to be maintained though. I’m not sure what exactly you’re expecting? – Daniel B Jan 22 '19 at 14:01
  • I want git to infer the repository based on the file path. The file itself does reside in a repository, so in the same way git can lookup the repo from my working directory, it or a script can look up from the file's location. If the file is outside a repository, then git should still complain as it does now. – NicestPerson Jan 22 '19 at 14:06

There are three ways to tell git where the repository is:

  1. The most common is to look in the working directory you are in. This may be an option in combination with other shell commands like pushd and popd
  2. You can direct the git command using the -C parameter as you are already doing.
  3. You can set the GIT_DIR environment variable (described here as "the location of the .git folder")
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.