在推送或克隆存储库时忽略.git的隐私?

在推送或克隆存储库时忽略.git的隐私?,git,Git,当我将本地存储库推送到远程存储库时,我的本地.gitignore文件也将推送到远程存储库 当有人克隆我的存储库时,他们也会复制我的.gitignore文件 我放在.gitignore中的文件可能是私有的,文件名也是私有的。因此,我想知道将我的.gitignore文件推送到或复制到另一个存储库是否是一个好主意?一般来说,.gitignore文件本身应该是私有的吗 我们可以使它不可推送或关闭吗?对于私有排除,您可以使用.git/info/exclude,它具有相同的语法,基本上工作方式相同,但不存储

当我将本地存储库推送到远程存储库时,我的本地.gitignore文件也将推送到远程存储库

当有人克隆我的存储库时,他们也会复制我的.gitignore文件

我放在.gitignore中的文件可能是私有的,文件名也是私有的。因此,我想知道将我的.gitignore文件推送到或复制到另一个存储库是否是一个好主意?一般来说,.gitignore文件本身应该是私有的吗


我们可以使它不可推送或关闭吗?

对于私有排除,您可以使用
.git/info/exclude
,它具有相同的语法,基本上工作方式相同,但不存储在存储库中


还有一个
core.excludesFile
(请参阅
mangit config
)用于您自己的全局(即不是每个存储库)排除。

如果您不
git添加
您的
.gitignore
文件,它将不会是索引的一部分,因此永远不会被推送到远程

推送
.gitignore
文件的事实意味着您添加了它——我甚至不认为
git add——默认情况下,所有的
都会这样做;所以,基本上,首先手动添加它是你的错

当我将本地存储库推送到远程存储库时,我的本地.gitignore文件也将推送到远程存储库

只有将
.gitignore
添加到存储库中时,才会出现这种情况


当然,您可以将
.gitignore
添加到
.gitignore
文件中,并且您的
.gitignore
文件本身将被忽略。

git add--all
更新索引以匹配工作目录,也就是说,它将添加所有新文件。真的。包括
.gitignore
,如果它存在的话。我不列出要
git add
的特定文件,而是使用shell文件扩展
git add*
,因为要显式列出的文件太多了。这就是为什么。gitignore被推。(1) 是否可以在
.gitignore
内部指定
.gitignore
本身,以防止
.gitignore
被推送或克隆?@Tim这是可能的,但意义不大
.gitignore
专门用于要进行版本控制的忽略。所以,如果您不想让它们受版本控制,您应该将它们放在其他地方。@k:您所说的“.gitignore”是什么意思?gitignore是专门针对那些要受版本控制的忽略的?“忽略”是指
.gitignore
,还是指
.gitignore
中列出的文件?@Tim的“忽略”是指告诉git要忽略哪些文件的模式
.gitignore
将添加到存储库并推送,以便其他人可以看到并使用。谢谢。我想强调的是,使用.gitignore文件的目的是防止某些文件被推送到或克隆到另一个存储库中。那么,您的意思是,通过使用
.git/info/exclude
,我将阻止这些文件提交到我的本地存储库中,从而不会推送或克隆到其他存储库中吗?@Tim是的,没错。正如我所说,它的工作方式与
.gitignore
完全相同,因此如果文件名是私有的,最好使用
.git/info/exclude
。如果您碰巧在多个存储库中都有这些文件,那么使用全局忽略文件可能会更方便。但是,如果我希望本地存储库包含我希望防止推送到其他存储库的文件,该怎么办?@Tim这是不可能的。您的提交要么包含这些文件,要么不包含。您可以设置一个push hook,在将提交推送到远程之前执行
git filter branch
以从所有提交中删除这些文件,但是您将无法从该远程撤回任何内容,因为它将具有不同的提交。谢谢。当您说
.git/info/exclude
未存储在存储库中时,您的意思是本地存储库中忽略了此文件吗?
.gitignore
.git/info/exclude
是否都可以存储(即跟踪)在本地存储库中。只有当我将它们添加到存储库中时,它们才会被删除?
.gitignore
可能存储在存储库中(但是,您可以忽略它,也可以不添加它)
.git/info/exclude
不能存储在存储库中。它是您的回购协议的本地版本。(1)“.git/info/exclude不能存储在存储库中”。你的意思是不可能,还是不推荐?(2) 整个
.git
目录是存储库吗?如果不是,那么
.git
的哪个部分是,哪个部分不是?这是不可能的。(整个)
.git
目录是您的存储库,无法添加或提交目录下的内容。谢谢。如果
.git
是我的存储库,那么为什么“.git/info/exclude”不能存储在存储库中?
.git
下的内容已存储在存储库中,因此无需再次添加和提交它们?