我在使用Git
时遇到了一些麻烦。我正在尝试执行git commit
命令,但我需要能够在~/.gitconfig1
和~/.gitconfig2
之间切换。是否有命令行开关或其他方法可以让Git
使用不同于在/etc/gitconfig
、~/.gitconfig
和.git/config
中找到的gitconfig文件?
我在使用Git
时遇到了一些麻烦。我正在尝试执行git commit
命令,但我需要能够在~/.gitconfig1
和~/.gitconfig2
之间切换。是否有命令行开关或其他方法可以让Git
使用不同于在/etc/gitconfig
、~/.gitconfig
和.git/config
中找到的gitconfig文件?
我找到了一种执行此操作的方法 - 它并不优雅,但确实可行 - 目前似乎是使其正常工作的唯一方法。
Git使用 HOME
路径来确定 .gitconfig
的位置。我能够执行类似于以下的内容:
/home/marco/.silly/.gitconfig
/home/marco/.stupid/.gitconfig
/home/marco/.gitconfig
当执行Git提交(这是唯一需要.gitconfig
的命令)时,我覆盖了主目录路径。
HOME=/home/marco/.silly/ git commit -m "silly configuration"
你可以使用别名(alias)轻松地实现这一点
alias sillygit="HOME=/home/marco/.silly/ git"
sillygit commit -m "silly stuff"
git config
本身,就像它的-f,--file
选项一样。 - Cascabelenv HOME=/home/marco/.silly git config --global --add safe.directory <repo-path>
。 - alper-c config=value
参数来更加优雅地应用到git
中:$ alias sillygit="git -c user.name=Silly -c user.email=silly@silly.org"
$ sillygit commit
.bashrc
或类似文件中,而不是.gitconfig
中,并且这会破坏Shell完成。.gitconfig
文件,而不是在一个工作区中切换配置,那么includeIf
可能就足够了,因为它可以根据工作区路径元素或远程URL加载自定义配置。详细信息请参阅https://git-scm.com/docs/git-config#_conditional_includes。@amirouche的评论和 Emil Lundberg的答案可以结合起来实际加载另一个Git配置文件:
alias git="git -c 'include.path=/some/path/to/my/custom/.gitconfig'"
然而,用户的~/.gitconfig
文件仍然被加载。这种方法只会覆盖其他git配置文件中的设置。
你可以使用 --git-dir
git --git-dir /home/marco/silly/.git commit ...
git commit-v2
(或更短的名称)全局别名为!export GIT_AUTHOR_NAME="Second name"; git commit
。 - CascabelincludeIf
吗?请参考 https://git-scm.com/docs/git-config。 - amirouche