Git - 不听嵌套目录中的命令
Git - do not listen to commands in nested dirs
我的主目录中有一个 git 存储库来跟踪一些点文件。
一个令人不快的副作用,无论我现在在哪里,它都被认为是 ~
存储库的一部分,并且很容易错误地向其中添加文件等。
有可能 ~/.git
中的 repo 仅在 ~
中直接调用这些命令时才监听命令(git add
等),否则它只是假装不存在,即 not a repository
被抛出? (例如,如果我在 ~/Documents
中调用 git add -A
)
不,这不可能。
但是,另一种方法可以是使用非标准 .git
目录:
- 将您的
.git/
目录重命名为其他名称(例如:.git-wont-know/
或 .git-dotfiles/
)
- 当您想与其互动时使用
git --git-dir=~/.git-wont-know ...
(link to docs)
您可以设置一个别名或包装器来使用这个特定的 git 目录;如果您想将其传递给现有脚本,您还可以设置 GIT_DIR=~/.git-wont-know
。
[更新] 这将关闭“通过查找 .git
目录找到存储库所在的位置”功能。
如果您想使用此设置从子目录调用 git(例如:来自 $HOME/.config/
),您可能还需要指定工作树是您的主目录:
git --git-dir=~/.git-wont-know --work-tree=~ ...
# or using environment variables :
GIT_DIR=~/.git-wont-know
GIT_WORK_TREE=~
我的主目录中有一个 git 存储库来跟踪一些点文件。
一个令人不快的副作用,无论我现在在哪里,它都被认为是 ~
存储库的一部分,并且很容易错误地向其中添加文件等。
有可能 ~/.git
中的 repo 仅在 ~
中直接调用这些命令时才监听命令(git add
等),否则它只是假装不存在,即 not a repository
被抛出? (例如,如果我在 ~/Documents
中调用 git add -A
)
不,这不可能。
但是,另一种方法可以是使用非标准 .git
目录:
- 将您的
.git/
目录重命名为其他名称(例如:.git-wont-know/
或.git-dotfiles/
) - 当您想与其互动时使用
git --git-dir=~/.git-wont-know ...
(link to docs)
您可以设置一个别名或包装器来使用这个特定的 git 目录;如果您想将其传递给现有脚本,您还可以设置 GIT_DIR=~/.git-wont-know
。
[更新] 这将关闭“通过查找 .git
目录找到存储库所在的位置”功能。
如果您想使用此设置从子目录调用 git(例如:来自 $HOME/.config/
),您可能还需要指定工作树是您的主目录:
git --git-dir=~/.git-wont-know --work-tree=~ ...
# or using environment variables :
GIT_DIR=~/.git-wont-know
GIT_WORK_TREE=~