Mercurial有一种打印根目录(包含.hg)的方法
hg root
git中是否有等价的东西来获取包含.git目录的目录?
Mercurial有一种打印根目录(包含.hg)的方法
hg root
git中是否有等价的东西来获取包含.git目录的目录?
当前回答
不管你是在git子目录下,还是在顶层,这个shell别名都有效:
alias gr='[ ! -z `git rev-parse --show-toplevel` ] && cd `git rev-parse --show-toplevel || pwd`'
更新为使用现代语法而不是反撇号:
alias gr='[ ! -z $(git rev-parse --show-toplevel) ] && cd $(git rev-parse --show-toplevel || pwd)'
其他回答
git-extras
添加$ git根目录 看到https://github.com/tj/git-extras/blob/master/Commands.md git-root
$ pwd
.../very-deep-from-root-directory
$ cd `git root`
$ git add . && git commit
git-extra的可用性
Homebrew (osx)/linuxbrew(linux) $ brew安装git-extras Debian /ubuntu repos (https://packages.debian.org/sid/git-extras) $ apt-get安装git-extras
以防万一,如果您要将此路径提供给Git本身,请使用:/
# this adds the whole working tree from any directory in the repo
git add :/
# and is equal to
git add $(git rev-parse --show-toplevel)
在Shell框架中预先配置的Shell别名
如果你使用shell框架,可能已经有一个可用的shell别名:
$ GRT in oh-my-zsh (68k) (cd $(git rev-parse——show-toplevel || echo ".")) $ git-root in prezto (8.8k)(显示工作树根的路径) $ g . .Zimfw (1k)(将当前目录更改为工作树的顶层。)
“git rev-parse——git-dir”怎么样?
F:\prog\git\test\copyMerge\dirWithConflicts>git rev-parse --git-dir
F:/prog/git/test/copyMerge/.git
——git-dir选项似乎可以工作。
它甚至可以在裸库中工作,而git rev-parse——show- topllevel会触发(在裸库中)“致命:此操作必须在工作树中运行”。
从git rev-parse手册页:
--git-dir
Show $GIT_DIR if defined else show the path to the .git directory.
您可以在这个git setup-sh脚本中看到它的作用。
如果你在子模块文件夹中,Git >=2.13,使用:
git rev-parse --show-superproject-working-tree
如果你正在使用git rev-parse——show-toplevel,请确保使用的是git 2.25+ (Q1 2020)。
在这里写一个简单的答案,这样我们就可以用
git root
要完成这项工作,只需使用
git config --global alias.root "rev-parse --show-toplevel"
然后你可能想在~/.bashrc中添加以下内容:
alias cdroot='cd $(git root)'
这样你就可以用croot到回购的顶部。