除非一个回购包含几个独立的项目,否则在回购.gitignore的根部只有一个文件比在整个过程中只有一个文件是最简单的.当在一种方法比另一种方法更好时,是否有关于此或在线分析的标准最佳实践?
我正在尝试解决大型目录结构上的gitignore问题,但为了简化我的问题,我已将其减少到以下内容.
我在一个全新的git存储库中有两个文件(foo,bar)的以下目录结构(到目前为止没有提交):
a/b/c/foo
a/b/c/bar
Run Code Online (Sandbox Code Playgroud)
显然,'git status -u'显示:
# Untracked files:
...
# a/b/c/bar
# a/b/c/foo
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建一个.gitignore文件,忽略/ b/c中的所有内容但不忽略文件'foo'.
如果我创建一个.gitignore:
c/
Run Code Online (Sandbox Code Playgroud)
然后'git status -u'显示foo和bar都被忽略:
# Untracked files:
...
# .gitignore
Run Code Online (Sandbox Code Playgroud)
这是我所期待的.
现在,如果我为foo添加排除规则,那么:
c/
!foo
Run Code Online (Sandbox Code Playgroud)
根据gitignore手册页,我希望这可行.但它没有 - 它仍然忽略了foo:
# Untracked files:
...
# .gitignore
Run Code Online (Sandbox Code Playgroud)
这也不起作用:
c/
!a/b/c/foo
Run Code Online (Sandbox Code Playgroud)
这也不是:
c/*
!foo
Run Code Online (Sandbox Code Playgroud)
得到:
# Untracked files:
...
# .gitignore
# a/b/c/bar
# a/b/c/foo
Run Code Online (Sandbox Code Playgroud)
在这种情况下,虽然不再忽略foo,但也不会忽略bar.
.gitignore中规则的顺序似乎也不重要.
这也不符合我的期望:
a/b/c/
!a/b/c/foo
Run Code Online (Sandbox Code Playgroud)
那个人忽略了foo和bar.
一种有效的方法是,如果我创建文件a/b/c/.gitignore并放入其中:
*
!foo
Run Code Online (Sandbox Code Playgroud)
但问题是最终在/ b/c下会有其他子目录,我不想在每一个中都放一个单独的.gitignore - 我希望创建'基于项目'.gitignore可以位于每个项目的顶级目录中的文件,并覆盖所有"标准"子目录结构.
这似乎也是等价的:
a/b/c/*
!a/b/c/foo
Run Code Online (Sandbox Code Playgroud)
这可能是我可以实现的最接近"工作"的东西,但需要说明完整的相对路径和明确的异常,如果我在不同级别有很多名为'foo'的文件,那将会很痛苦子目录树的.
无论如何,要么我不太明白排除规则是如何工作的,要么当目录(而不是通配符)被忽略时它们根本不起作用 - 以一个以/结尾的规则
任何人都可以对此有所了解吗?
有没有办法让gitignore使用像正则表达式那样合理的东西而不是这种笨拙的基于shell的语法? …
我有一个git存储库忽略了图像文件以及一些其他文件,但我的.gitignore文件只忽略了一个config.php文件.是否有一些我无法找到的全局忽略文件?我必须指定文件才能立即添加它们,并且它给了我这个警告:
您的.gitignore文件会忽略以下路径.
我的~/.gitconfig文件内容只是我的电子邮件地址.
有没有办法验证.gitignore文件,以便您快速找到不再存在的双路径或路径?通常,当项目很小时,这不是必需的,但是有很多分支和.gitignore文件的合并,这可以随便出现.
我发现在python 3中,我的应用程序的每个子文件夹中都有一个__pycache__,当然* .pyc文件也会在其中创建。在我应用程序根文件夹的.gitignore文件中,我可以简单地放置:
**/__pycache__
**/*.pyc
Run Code Online (Sandbox Code Playgroud)
在以后创建的所有子文件夹中忽略这些?还是我需要在每个子文件夹中放置一个.gitignore?
在相关说明中,我如何检查所有未跟踪(忽略)的内容。我尝试了“ git status -u”,它没有显示__pycache__或.pyc文件为未跟踪状态。
我在Git下添加了一个Laravel应用程序,以便我可以推送到Bitbucket.在根文件夹上,我运行git add -A并推送远程服务器.我检查过它没有发送所有文件夹; 例如,它根本没有添加vendor文件夹.如何确保添加所有子文件夹?当我跑步时git status,它说:
# On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
更新
我跑了git status --ignore,发现列出了以下文件:
stocktrack/app/storage/logs/laravel.log
stocktrack/app/storage/meta/services.json
stocktrack/app/storage/sessions/cdf664ccf42d040bc92d76418f736cc78e20d77a
stocktrack/app/storage/views/81774cd762e1fa0174ad42e0b0d53196
stocktrack/bootstrap/compiled.php
stocktrack/composer.lock
stocktrack/vendor/
Run Code Online (Sandbox Code Playgroud)
在.gitignore,我只补充说.idea.为什么忽略其他人呢?
我有一个不应该被我的.gitignore忽略的文件夹,但是git仍然忽略它.我找不到任何其他.gitignore文件或git配置,建议忽略此文件夹,并且git check-ignore什么都不打印.
我的.gitignore像白名单一样组织:
*
!.gitignore
!NotIgnoredFolder/
!SomeOtherFolderInRoot
Run Code Online (Sandbox Code Playgroud)
我有一个沿着NotIgnoredFolder/subfolder/js的文件夹,git忽略了.根据它的位置和我的.gitignore,显然不应忽略这条路径.当我尝试添加它时git add NotIgnoredFolder/subfolder/js,我明白了
The following paths are ignored by one of your .gitignore files:
NotIgnoredFolder/subfolder/js
Run Code Online (Sandbox Code Playgroud)
我搜索了我的整个C:驱动器.gitignore和.gitignore_global文件可能会干扰,没有运气.我还检查了我的.git/config和我的.git/info/exclude.此外,当我尝试时git check-ignore NotIgnoredFolder/subfolder/js,Git打印一个空行.
有没有办法看到.gitignore文件导致忽略?或者这可能是我设置我的gitignore的结果?
我尝试过的解决方案没有成功:
我想包含 Assets 目录和所有子目录中的所有 *.meta 文件,同时排除 Assets 中的其他所有内容
我试过
/Assets/*
!/Assets/**/*.meta
!*.meta
Run Code Online (Sandbox Code Playgroud)
但只包括 /Assets 中的 *.meta ???
谢谢你的帮助
说我有.gitignore:
x64/
x86/
bin/
obj/
FileA
FileB
FileC
etc..
Run Code Online (Sandbox Code Playgroud)
现在,当我构建时,我想忽略的所有构建文件实际上都被忽略了。但是,由于缺少文件(称为 FileX),构建失败。
当我将 FileX 添加到项目中时,它构建得很好,没有错误。但是,GIT 没有看到我添加了该文件,当我这样做时git status --ignored,我看到了untracked files.
我尝试了undo git假定不变中的解决方案,但没有成功。
为什么这个文件被忽略并且我没有将其添加到 .gitignore 中?
我正在一个带有嵌套 git 存储库的 linux 系统上工作。我的文件/目录结构如下:
~/
.git/
.gitignore
file1
project/
.git/
file2
file3
Run Code Online (Sandbox Code Playgroud)
在我的 homedir 中,我为我的 linux 配置文件创建了一个 repo。忽略文件 (~/.gitignore) 仅包含“*”(排除所有内容)。我用'git add -f file'添加了文件。在嵌套存储库(项目)中,我发现即使在提交时更新了正确的 '(~/project/).git' 目录,所有内容也被排除在外。我已经使用以下命令检查了这一点:
> cd ~/project
> git add file2
The following paths are ignored by one of your .gitignore files:
file2
Use -f if you really want to add them.
fatal: no files added
> git check-ignore -v file2
~/.gitignore:1:* file2
Run Code Online (Sandbox Code Playgroud)
命令 check-ignore 从版本 1.8.2 开始可用,其动机是 stackoverflow 问题:which gitignore rule is ignoring my file。 …