如何禁止git命令移动到父目录?

如何禁止git命令移动到父目录?,git,Git,我的主目录中有一个点文件的git存储库。 每次我在没有自己repo的子目录中使用git命令(例如,git log)时,我都会得到点文件repo的日志,例如 /home/dimid $ cd foo /home/dimid/foo $ git status ... log of ~/.git 但是,我想将我的点存储库仅限于以点开头的文件和目录(例如,.vim),这样当我在~/foo和~/foo/.git中时,git log将输出通常的 fatal: Not a git reposito

我的主目录中有一个点文件的git存储库。 每次我在没有自己repo的子目录中使用git命令(例如,
git log
)时,我都会得到点文件repo的日志,例如

/home/dimid     $ cd foo
/home/dimid/foo $ git status

... log of ~/.git
但是,我想将我的点存储库仅限于以点开头的文件和目录(例如,
.vim
),这样当我在
~/foo
~/foo/.git
中时,
git log
将输出通常的

fatal: Not a git repository (or any of the parent directories): .git
即使父目录
~
包含
.git
文件夹


我考虑过使用别名
git
并添加了一个异常,有没有更优雅的方法?

我不知道有什么方法可以做到这一点;因为Git总是向上移动目录树,直到找到
.Git
目录。现在,由于您的
/home
目录是一个git存储库;所有子目录都会在您的
/home
文件夹中找到
.git
目录

我可以看到一个工作,但它不是很干净

  • 在家中(或其他地方)创建子目录;您将在其中初始化git存储库(例如“/home/user/configfiles/”)
  • 现在,在您希望保存在git存储库中的配置文件和系统上的配置文件之间创建硬链接(例如“ln~/.config./”)(注意,您需要使用硬链接;否则git将只对符号链接指向的路径进行版本设置)

这样,您的主目录将不再是git存储库;而且这个问题是可以避免的……

恐怕这很难获得;如果不是不可能的话。Git被要求向上移动目录,以检查当前目录是否是Git回购的一部分;由于您的主目录是一个……与其搜索如何使Git忽略子目录,不如搜索如何在源代码管理中正确保存.vimrc之类的文件。@tom我很乐意听您这么说suggestions@dimid下面是一些人对完全相同的根本问题的回答,谢谢,但是
~
有一些子模块(如
.vim/bundle
)因此我不想动态跟踪它们并添加硬链接。我知道这不是最漂亮的解决方案……但无论如何,您必须为每个文件执行“git add”?我同意这个解决方案不是很漂亮(如我在回答中所说)。它确实有一些缺陷;但这是我能想到的最好的答案…谢谢,我对你的答案投了赞成票。如果没有更好的选择,我将接受它或尝试别名技巧。tx。这是一个有效的问题;如果我听到任何其他建议,我也会感兴趣:)