Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't stage folder for commit with git add . or git add -u

so if I do a git status I get:

bsg-integration> git status
On branch master
Your branch is up-to-date with 'origin/master'.

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:   bsg-services (untracked content)

no changes added to commit (use "git add" and/or "git commit -a")

I then tried using git add . and git add -u but I still get the same thing when i use git status. What is going on and how to I push this folder to github? On my github repo the folder bsg-services is showing up as a greyed out folder. What does this mean? Thanks!

like image 976
Wang-Zhao-Liu Q Avatar asked Jun 11 '14 16:06

Wang-Zhao-Liu Q


1 Answers

It (bsg-services) is a submodule. (see "What is this grey git icon?")

You need to:

  • add/commit by going in that folder first (and push from that sub repo),
    (a git status inside bsg-services will tell you more)
  • then go back to the parent repo (where you are), add, commit and push.
    The commit you will have done inside bsg-services will have modified the gitlink entry in the index of your parent repo.

So you need both pushes:

  • one from the submodule repo to its upstream repo (a git remote -v should show you that)
  • one from the parent repo in order to record the new gitlink SHA1 which memorizes the new state of that submodule.
like image 118
VonC Avatar answered Sep 22 '22 09:09

VonC