Skip to content
Advertisement

Are git commands supposed to be run under the working directory directly?

Suppose I have a git working directory, i.e. the directory which has a subdirectory called .git.

I wonder if the current directory matters when I run a git command. Is it okay to run a git command

  • directly under the working directory

  • directly under some subdirectory of (subdirectory of) the working directory

  • directly under the parent directory of the working directory?

Consider

  • git commands which can take an argument which specifies some files, e.g. git add, and
  • git commands which doesn’t take an argument that specifies some files, e.g. git pull, git push.

Advertisement

Answer

directly under the parent directory of the working directory?

Actually you can run it anywhere you want as long as you reference the git repo:

git --git-dir=/path/to/my/repo/.git add .

That means wherever you are (.: current folder) will be considered as your working tree. A

You can even specify your working tree:

git --work-tree=/a/path --git-dir=/path/to/my/repo/.git add .

In that latter case, you even can execute that last command anywhere you want. The ‘.‘ will be the work-tree /a/path.

Since git 1.8.5, you also have the -C option:

git -C /path/to/my/repo add .

Again, you can execute it anywhere you want, but the command will internally do a cd /path/to/my/repo first, and then execute the add .. That means the ‘.‘ will actually be /path/to/my/repo.

Finally, since git 2.5, a git repo supports multiple working trees, so you may execute your command in a folder which does not include a subfolder .git (but actually a kind of symbolic link to /path/to/my/repo/git)

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement