【问题标题】:Git - do not listen to commands in nested dirsGit - 不要听嵌套目录中的命令
【发布时间】:2021-05-21 12:06:35
【问题描述】:

我的主目录中有一个 git repo 来跟踪一些点文件。

一个不愉快的副作用,无论我现在在哪里,它都被认为是~ repo 的一部分,并且很容易错误地向其中添加文件等。

只有在~ 中直接调用这些命令时,~/.git 中的 repo 才会侦听命令(git add 等),否则它只是假装不存在,即not a repository被抛出? (例如,如果我在~/Documents 中调用git add -A

【问题讨论】:

  • IMO 将您的主目录作为 git 存储库仅在您设置了广泛的 .gitignore 以确保它只在您想要它时变脏时才有意义。就我个人而言,我会回避这一点,并将特定目录(甚至文件)置于 git 控制之下,并根据需要对它们进行符号链接。为了能够给出更好的答案:您能否解释一下您想要 ~/Documents 的处理方式?您想跟踪 一些 文件而不是其他文件吗?只跟踪您明确添加的文件?
  • 前段时间,我终于决定将一堆点文件置于 Git 控制之下。为此,我创建了一个 Git 存储库,其中包含 (a) 一个 (python) 脚本来安装点文件; (b) 所述点文件的集合; (c) 其他有用的脚本。这个.git 住在我的~/scripts 中。这样我的主目录中根本没有.git

标签: git dotfiles


【解决方案1】:

不,这是不可能的。

然而,另一种方法是使用非标准的.git 目录:

  • 将您的 .git/ 目录重命名为其他名称(例如:.git-wont-know/.git-dotfiles/
  • 当你想与之交互时使用git --git-dir=~/.git-wont-know ... (link to docs)

你可以设置一个别名或包装器来使用这个特定的 git dir ;如果您想将其传递给现有脚本,也可以设置 GIT_DIR=~/.git-wont-know


[update] 这会关闭“通过查找.git 目录来查找repo 所在的位置”功能。

如果您想从子目录(例如:来自$HOME/.config/)使用此设置调用 git,您可能还需要指定工作树是您的主目录:

git --git-dir=~/.git-wont-know --work-tree=~ ...

# or using environment variables :
GIT_DIR=~/.git-wont-know
GIT_WORK_TREE=~

【讨论】:

  • 这可能是--git-dir 有两个破折号,对吧?不错的建议,我喜欢。
猜你喜欢
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 2014-04-05
  • 1970-01-01
  • 2019-05-18
  • 2018-06-08
相关资源
最近更新 更多