我在 git 存储库中有一个目录,其中有一些文件,我们称之为matchdir:
$ ls matchdir
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
da39a3ee5e6b4b0d3255bfef95601890afd80709
file.py
someotherfile.txt
Run Code Online (Sandbox Code Playgroud)
我想将匹配 40 个十六进制字符的文件添加到我的.gitignore文件中。类似的东西,matchdir/[0-9a-f]{32}但这似乎不起作用。有没有办法匹配 .gitignore 文件中字符的特定重复次数?
我只想跟踪目录中的一个文件.这个文件是buildout.cfg.所以我先跑了git init.然后我创建了一个.gitignore文件,其内容如下:
* # Blacklist all files
!buildout.cfg # Whitelist the file I'm interested in
Run Code Online (Sandbox Code Playgroud)
但是现在当我运行命令时git add,git继续前进并添加了几十个文件 - 目录中的所有内容.
为什么?
我在做
git add db/schema.rb
The following paths are ignored by one of your .gitignore files:
db/schema.rb
Use -f if you really want to add them.
fatal: no files added
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到此文件被忽略,请参阅:
cat .gitignore
.project
nbproject
.redcar
cat ~/.gitignore
.idea
Run Code Online (Sandbox Code Playgroud)
~/.gitignore 是为了全球忽视.
我想这可以解决问题:
*
!/dir1/
!/dir2/
!/file1
!/file2
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,事实并非如此。如果我在星号前加一个斜杠,它似乎可以工作。但我真的不明白为什么在这个改变之前它不起作用。有人能指点一下吗?
我理解如何设置git以使用.gitignore文件来忽略文件但是想知道为什么这不是一个命令功能,使得这个任务稍微不那么乏味.我稍后会将这个问题发布到git-scm邮件列表,但是想知道这里是否有人可能有正当理由缺少...
'git ignore <pattern>'
Run Code Online (Sandbox Code Playgroud)
......特色.我相信还有其他开发人员会觉得这个功能很有用.
Laravel的官方网站建议我们将.env放入gitignore等等.
为什么?一旦忘记了如何设置配置,我觉得将来使用起来非常方便.
一个随机问题 - 但是有一种已知的方法可以为推荐的框架等创建.gitignore文件,例如:
Django的:
*.pyc
db.sqlite3
Run Code Online (Sandbox Code Playgroud)
node.js(和其他人):
/node_modules
Run Code Online (Sandbox Code Playgroud)
PHP:
env.local.php
Run Code Online (Sandbox Code Playgroud)
看起来我或者是.)找不到这个或b.)我没有正确使用git init或.gitignore创建?
我的项目中有一个带有数据库设置的文件,我已将其设置为一些默认值。跟踪Git并检入该文件。由于将使用各种开发人员机器的不同值来编辑此文件,所以有什么方法可以让我Git忽略该文件的新更改?
我尝试将文件添加到.gitignore文件中,但是由于已跟踪文件,因此不会忽略该文件。在其他情况下这还不错,但是我想知道是否可以在这里做些什么?
在我的项目中,我们确定markdownfiles用于生成pdf和html使用相同文件名(只是不同的扩展名).我想gitignore这些pdf文件而不是其他pdf文件(没有生成).
我知道我可以逐个手动取消这些文件的签名,我也知道我可以指定一个无人值守的文件夹.但我正在寻找某种模式,通过它我可以忽略生成的文件,这本身可以确保不会忽略未生成的文件.
我在Git 2.7发行说明中找到了一个下面的句子.
允许稍后的"!/ abc/def"覆盖出现在同一.gitignore文件中的早期"/ abc",以便更容易表达"/ abc目录中的所有内容都被忽略,除了......".
但是,此功能在后续版本中似乎无效.
$ git --version
git version 2.19.1
$ cat .gitignore
/abc
!/abc/def
$ mkdir abc
$ echo foo > abc/def
$ git status
On branch master
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
Git改变了"!" .gitignore的前缀行为?还是我弄错了?