Home | About | Apps | Github | Rss
To discard local changes in git repository
git reset --hard
For submodules its a bit tricky.
git submodule update --init
git submodule foreach git reset --hard
It probably means there are some hidden/gitignored files lying around in submodule repository directory. For example, I was seeing this and none of the above steps helped.
kalyan@pogobook:project$ git status
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: ReactiveCocoa (untracked content)
#
kalyan@pogobook$ git diff
diff --git a/ReactiveCocoa b/ReactiveCocoa
--- a/ReactiveCocoa
+++ b/ReactiveCocoa
@@ -1 +1 @@
-Subproject commit 6ce5f58a0545c69039f262eb3b08c0e0a0c2c413
+Subproject commit 6ce5f58a0545c69039f262eb3b08c0e0a0c2c413-dirty
I went ahead and inspected what was inside the ReactiveCocoa directory
kalyan@pogobook:project$ cd ReactiveCocoa/
kalyan@pogobook:ReactiveCocoa$ git status
# Not currently on any branch.
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .DS_Store
Turns out .DS_Store
was the culprit. Deleting it fixed the annoying untracked content message right away.
kalyan@pogobook:ReactiveCocoa$ rm .DS_Store
kalyan@pogobook:ReactiveCocoa$ cd ..
kalyan@pogobook:project$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#