Re: [DOC] more explanation about --git-dir and --work-tree options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Liu Yubao venit, vidit, dixit 28.04.2008 22:09:
Hi,

I find these two options bring me surprise:

   git init $HOME
   git add ~/.vimrc ~/.gvimrc ~/.vim
   cd $HOME/work/xxx
   ....do some work, then change ~/.vimrc without changing
       working directory
   git --git-dir $HOME/.git status

I use --git-dir because I have another .git in $HOME/work/xxx, the
last command surprises me much, it tells me .vim* are all deleted!

After checking the code, I realize git thinks the current working
directory as top directory of the working tree if --git-dir is specified
without --work-tree option.

Yes, I found this surprising at first, too. And I noticed later on why things are the way they are, just as you did. :)

More doc on this is certainly helpful.

And here is my supplement to the documentation.

+	variable and the '--work-tree' command line option. It can be
+	a absolute path or relative path to the directory specified by

"an absolute path or a relative...""

+	--git-dir or GIT_DIR.
+	Note: If --git-dir or GIT_DIR are specified but none of
+	--work-tree, GIT_WORK_TREE and core.worktree is specified,

I would probably interchange "is" and "are" here.

Same changes in the following.

I often find myself wanting to operate on a repo without cd'ing to it. While

( cd repo && git command args)

is certainly an option I find the following shell functions helpful:

alias g=git
function gg ()
{
  local _gg="$1";
  shift;
  git --git-dir="${_gg}/.git" --work-tree="${_gg}" "$@"
}

That way,

gg repo command args

runs git in a different location while

g command args

works as usual (and is shorter).

Now I'm just waiting for the experts to tell me that cd'ing to repo is completely different from specifying --git-dir and --work-tree, and that either way is completely wrong. (I'm still stupid and ugly, but I want to become clever and smart.) ;)

Michael

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux