gitgit-pushgit-untracked

git commit modified and untracked content


I have setup git to my project to push modifications to gitlab repository.

I installed a plugin from github which lies in /vendor/dereuromar/cakephp-queue

There is also a .git directory and other files associated with git in the plugin's directory

When I push my project to gitlab, everything pushes except this directory.

When trying git status it gives error as

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:   vendor/dereuromark/cakephp-queue (modified content, untracked content)

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

I tried removing .git directory, .gitignore and .gitattributes directory from vendor/dereuromark/cakephp-queue.

The output of git status is

On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

But the contents of that directory is not uploaded to gitlab.

How can I push the content of this directory? I have not created any submodule.


Solution

  • You cannot push anything that hasn't been committed yet. The order of operations is:

    1. Make your change.
    2. git add - this stages your changes for committing
    3. git commit - this commits your staged changes locally
    4. git push - this pushes your committed changes to a remote

    If you push without committing, nothing gets pushed. If you commit without adding, nothing gets committed. If you add without committing, nothing at all happens, git merely remembers that the changes you added should be considered for the following commit.

    The message you're seeing (your branch is ahead by 1 commit) means that your local repository has one commit that hasn't been pushed yet.

    In other words: add and commit are local operations, push, pull and fetch are operations that interact with a remote.

    Since there seems to be an official source control workflow in place where you work, you should ask internally how this should be handled.