本文共 4030 字,大约阅读时间需要 13 分钟。
如何在上使用忽略Git中的目录或文件夹?
似乎忽略文件和目录有两种主要方法:
.
.gitignore
文件放入.git
文件夹之外的存储库的根.git
(在Windows中, 确保您 ,然后再创建.gitignore.
(最后一点是空文件扩展名)) ~/.gitignore_global
并运行git config --global core.excludesfile ~/.gitignore_global
将其添加到您的Git配置中 注意:可以通过运行git rm --cached filename
取消跟踪之前跟踪的git rm --cached filename
存储库排除 -对于不需要共享的本地文件,只需将文件模式或目录添加到文件.git/info/exclude
。 这些规则未提交,因此其他用户看不到它们。 更多信息在 。
要在被忽略的文件列表中设置例外,请参阅 。
我认为问题在于您的工作树是这样的:
a-cache/fooa-cache/index.htmlb-cache/barb-cache/foob-cache/index.html.gitignore
...以及您描述的.gitignore
。 这将为您提供git status
输出,例如:
$ git status# On branch master# Untracked files:# (use "git add..." to include in what will be committed)## .gitignore# a-cache/# b-cache/
... 如果 index.html
文件尚未添加到资源库。 (Git看到缓存目录中存在不可忽略的文件,但它仅报告目录。)要解决此问题,请确保已添加并提交index.html
文件:
git add *cache/index.htmlgit commit -m "Adding index.html files to the cache directories"
...,然后您的git status
将如下所示:
$ git status# On branch master# Untracked files:# (use "git add..." to include in what will be committed)## .gitignorenothing added to commit but untracked files present (use "git add" to track)
(显然,您也确实想提交.gitignore
。我只是对此测试用例感到懒惰。)
如果要维护文件夹而不是其中的文件,只需将文件夹“ .gitignore”放入内容为“ *”的文件中即可。 该文件将使Git忽略存储库中的所有内容。 但是.gitignore
将包含在您的存储库中。
$ git add path/to/folder/.gitignore
如果添加一个空文件夹,则会收到此消息(.gitignore是隐藏文件)
The following paths are ignored by one of your .gitignore files:path/to/folder/.gitignoreUse -f if you really want to add them.fatal: no files added
因此,使用“ -f”强制添加:
$ git add path/to/folder/.gitignore -f
我有类似的问题。 我在Windows工具链上与Linux共享仓库一起工作,他们很高兴在给定的文件夹中创建具有相同名称(大小写除外)的文件。
这样做的结果是,我可以克隆存储库,并立即拥有数十个“修改过的”文件,如果我签入,将造成严重破坏。
我将Windows设置为区分大小写,而Git设置为不忽略大小写,但是它仍然失败(显然是在Win32 API调用中)。
如果我gitignore文件,那么我必须记住不要跟踪.gitignore文件。
但是我在这里找到了一个很好的答案:
在Windows中,还有一个斜杠。 使用.gitignore排除单个目录
dir_to_exclude /
将可能会工作,但排除所有带有
/
当目录中的文件名带有空格(例如my file.txt
)时,会引起问题:Git Bash使用反斜杠(例如my\\ file.txt
)对这些空格进行转义,并且Windows的Git不能区分/
和\\
。
要排除所有目录,请更好地使用:
** /
两个连续的星号表示目录内容。
要指示Git忽略某些文件或文件夹,您必须创建.gitignore
文件。
但是在Windows资源管理器中,您必须提供文件名。 您只是不能创建带有扩展名的文件。 诀窍是创建一个空的文本文件,然后转到命令提示符并将文件名更改为.gitignore
:
ren "New Text Document.txt" .gitignore
现在,使用您喜欢的文本编辑器打开文件,并添加您希望忽略的文件/文件夹名称。 您也可以使用通配符,例如: *.txt
。
您可以使用以下内容创建“ .gitignore”文件:
*!.gitignore
这个对我有用。
默认情况下,实际上文件名为.gitignore
时,Windows资源管理器将显示.gitignore.txt
。
Git不会使用.gitignore.txt
而且您不能将文件重命名为.gitignore
,因为资源管理器认为它是gitignore类型的文件,没有名称。
非命令行解决方案:
You can rename a file to ".gitignore.", and it will create ".gitignore"
在项目的目录中创建一个名为.gitignore
的文件。 通过在文件中输入目录名称(附加斜杠)来忽略目录:
dir_to_ignore/
更多信息在 。
我在使用创建文件时遇到一些问题.
一开始。
一种解决方法是进入命令提示符并使用“编辑”创建一个新文件。
要忽略Git中的整个目录,最简单的方法是在目标目录中包含一个.gitignore文件,该文件仅包含“ *”。
一个说明性的例子,
示例系统
/root/ .gitignore /dirA/ someFile1.txt someFile2.txt /dirB/ .gitignore someFile3.txt someFile4.txt
目标
顶级.gitignore(/root/.gitignore)
忽略目录.gitignore(/root/dirB.gitignore)
就这么简单:)
万一您需要排除子文件夹,可以使用**
通配符排除任何级别的子目录。
**/build/output/Debug/
同样在您的\\.git\\info
项目目录中,有一个排除文件实际上与.gitignore
是相同的(我认为)。 您可以在其中添加要忽略的文件和目录。
如果其他所有方法都失败,请尝试编辑文件
/.git/info/exclude
并将所需目录添加到文件末尾,如下所示:
# git ls-files --others --exclude-from=.git/info/exclude# Lines that start with '#' are comments.# For a project mostly in C, the following would be a good set of# exclude patterns (uncomment them if you want to use them):# *.[oa]# *~assets/compiled/
我将文件夹“ assets”和“ compiled”添加到要忽略的文件和目录列表中。
在Unix上:
touch .gitignore
在Windows上:
echo > .gitignore
在终端中执行的这些命令将在当前位置创建一个.gitignore
文件。
然后只需将信息添加到此.gitignore
文件(例如,使用Notepad ++),即可忽略哪些文件或文件夹。 保存您的更改。 而已 :)
详细信息:
在Windows和Mac上,如果要忽略当前目录中名为Flower_Data_Folder的文件夹,则可以执行以下操作:
echo Flower_Data_Folder >> .gitignore
如果它是一个名为data.txt
的文件:
echo data.txt >> .gitignore
如果是类似“ Data / passwords.txt”的路径
echo "Data/passwords.txt" >> .gitignore.
我在让Git拿起Windows上的.gitignore
文件时遇到了一些问题。 $GIT_DIR/info/exclude
文件似乎始终可以工作。
但是,这种方法的缺点是, $GIT_DIR
目录中的文件未包含在签入中,因此无法共享。
ps
$GIT_DIR
通常是名为.git
的隐藏文件夹
转载地址:http://uaogj.baihongyu.com/