Search code examples
iosgitgit-add

Why git add -A doesn't add all my png files?


I have a repo containing a bunch of .png files. Those are organized into two subdirectories

  • icon/
  • screen/

enter image description here

enter image description here

As you may notice, they are icons and screens for an iOS app (I don't know if it an useful info).

I perform a git init and a git add -A.

PNG files in screen/ get tracked. PNG files in icon/ remain untracked.

This is my global .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

This is my local .gitignore

build/
.retry

I also tried to run git check-ignore -v * to find which .gitignore rule prevents icon png files to be tracked but there are no rules:

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

I also tried to inspect extended attributes using ls -al@ but I could'nt spot any differences.

Can you explain why and provide a solution, please?


Solution

  • Did some testing locally with your setup, on line 133 of your gitignore you have the line

    Icon
    

    This is causing the directory to be ignored.

    Decide if you need this rule, if you don't remove that line and re-run

    git add -A
    

    An alternative would be to rename your directory

    EDIT: To clarify how I identified this I used

    git check-ignore -v icon/test1.png
    

    which returned

    .gitignore:133:Icon icon/test1.png