在主目录中,我有一个git存储库来跟踪配置文件,例如.zshrc,.vimrc。 .gitignore文件排除所有这些指定文件以外的文件。
在我的〜/ Desktop /目录中,我克隆了另一个项目,该项目具有自己的.gitignore。但是,当我在此子模块中创建新文件并尝试添加并提交它们时。它总是说“没什么可做的,工作得很干净”
我尝试删除父模块的.gitignore,子模块可以添加并提交。这意味着我的子模块的“ git add”受父模块的.gitignore影响。我还尝试创建虚拟的嵌套存储库,父目录的.gitignore不会影响其子存储库。现在,我对这种不同的行为感到困惑。
这是父母的.gitignore
# Ignore everything
*
# But not these files:
!.gitignore
!.zshrc
!.bash_profile
!.vimrc
答案 0 :(得分:1)
TL; DR
运行
git config --global core.excludesFile <file name for global ignore patterns>
详细信息
根据我的经验,主目录中的.gitignore
全局适用。
经过研究,我发现设置core.excludesFile
定义了一个忽略文件,该文件将在每个沙箱中读取。在我的Linux机器上,默认设置为~/.gitignore
,而在我的Windows机器上,默认设置为其他位置。
对于您来说,它显然在您的家中,因此您需要对其进行更改,以便您的家Git repo的.gitignore
也不是您的全局对象:
git config --global core.excludesFile ~/.gitignore.global
现在,如果您想在各处忽略某些内容,请将它们放在该文件中,而您的~/.gitignore
仅适用于家庭Git存储库本身。
答案 1 :(得分:1)
发生此问题是因为默认情况下,在Linux和MacOS(@joanis)上,〜/ .gitignore 文件会影响全局。
在这种情况下,不会产生全局影响。我将全局gitignore文件的路径更改为~/.gitignore_global
,并在该路径处创建了一个空的.gitignore_global
文件。 ~/.gitignore
保持不变。谢谢大家的帮助〜
使用
git config --get core.excludesfile
输出显示全局git忽略文件的路径,默认情况下为~/.gitignore
。
如果要更改默认的全局.gitignore,可以使用
git config --global core.excludesfile '~/.gitignore_global'
以上将全局默认git ignore文件的 path 更改为~/.gitignore_global
。
如果现在查看~/.gitconfig
文件,我们将找到
[core]
excludesfile = ~/.gitignore_global
如@jthill所述,使用
git check-ignore -nv path/to/whatever
上述命令的输出解释为here。如果显示:: path/to/whatever
表示文件或目录不受任何git忽略模式的影响,将在执行git add theFile
时添加。