4

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?

Phonolog
  • 6,321
  • 3
  • 36
  • 64
Adriano Di Giovanni
  • 1,445
  • 1
  • 16
  • 34

1 Answers1

3

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
Peter Reid
  • 5,139
  • 2
  • 37
  • 33
  • Thanks, Peter. It works! It's very strange I couldn't spot it using `git check-ignore -v *` and it's also very strange git is case insensitive. As far as I know, git is case sensitive by default – Adriano Di Giovanni Feb 17 '17 at 10:32
  • 2
    @AdrianoDiGiovanni: Git tries (not always very successfully) to understand whether the host system does case-folding. MacOS HFS+ does case folding by default, so Git sets `core.ignoreCase` to `true` and then knows that `icon` matches `Icon`. – torek Feb 17 '17 at 13:47