【问题标题】:Why git add -A doesn't add all my png files?为什么 git add -A 不添加我所有的 png 文件?
【发布时间】:2017-07-06 16:51:57
【问题描述】:

我有一个包含一堆 .png 文件的仓库。这些被组织到两个子目录中

  • icon/
  • screen/

您可能会注意到,它们是 iOS 应用程序的图标和屏幕(我不知道这是否有用)。

我执行git init 和git add -A。

screen/ 中的 PNG 文件被跟踪。 icon/ 中的 PNG 文件仍未被跟踪。

这是我的全球.gitignore

*.retry

# Dropbox settings and caches
.dropbox
.dropbox.attr
.dropbox.cache

# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity


# Ignore redis binary dump (dump.rdb) files

*.rdb

# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache

# workspace files are user-specific
*.sublime-workspace

# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project

# sftp configuration file
sftp-config.json

# Package control specific files
Package Control.last-run
Package Control.ca-list
Package Control.ca-bundle
Package Control.system-ca-bundle
Package Control.cache/
Package Control.ca-certs/
bh_unicode_properties.cache

# Sublime-github package stores a github token in this file
# https://packagecontrol.io/packages/sublime-github
GitHub.sublime-settings

.vagrant/

# Virtualenv
# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
.Python
[Bb]in
[Ii]nclude
[Ll]ib
[Ll]ib64
[Ll]ocal
[Ss]cripts
pyvenv.cfg
.venv
pip-selfcheck.json

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint

*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

这是我本地的.gitignore

build/
.retry

我还尝试运行git check-ignore -v * 来查找哪个.gitignore 规则阻止图标png 文件被跟踪但没有规则:

.gitignore:1:build/ build
/Users/me/.gitignore_global:1:*.retry   copy_resources.retry

我还尝试使用 ls -al@ 检查扩展属性,但我无法发现任何差异。

您能解释一下原因并提供解决方案吗?

【问题讨论】:

  • 您实际上是从哪个位置进行的git add -A?另外,作为旁注,避免在 Git 中对二进制文件进行版本控制通常是一个好主意,尽管对一些小图标进行版本控制并不是一件坏事。
  • 我在项目根目录下git add -A。
  • 也许检查您的.gitignore 只是为了进行健全性检查。
  • 我的.gitignore 文件(全局和本地)不要忽略它们。我编辑了我的问题以添加两个文件中的内容。

标签: ios git git-add


【解决方案1】:

用你的设置在本地做了一些测试,在你的 gitignore 的第 133 行你有这条线

Icon

这导致目录被忽略。

决定你是否需要这条规则,如果你不删除那行并重新运行

git add -A

另一种方法是重命名您的目录

编辑:为了澄清我是如何识别我使用的

git check-ignore -v icon/test1.png

返回的

.gitignore:133:Icon icon/test1.png

【讨论】:

  • 谢谢,彼得。有用!很奇怪,我无法使用git check-ignore -v * 发现它,而且 git 不区分大小写也很奇怪。据我所知,git默认区分大小写
  • @AdrianoDiGiovanni:Git 尝试(并不总是非常成功)了解主机系统是否进行大小写折叠。 MacOS HFS+ 默认情况下会进行大小写折叠,因此 Git 将 core.ignoreCase 设置为 true,然后知道 icon 匹配 Icon。
猜你喜欢
  • 1970-01-01
  • 2014-09-16
  • 2018-05-14
  • 2011-02-15
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2011-12-05
相关资源
最近更新 更多