Make change to a git submodule, and keep the changes

I’ve cloned a git submodule of one of my libraries into a project I’m working on. The thing is that, after cloning, I need to change some lines in the cloned submodule, but I don’t want to push those changes into the original repository.

I want those changes to stay in the superproject. Is this possible? How can I achieve that?

  • Can I destroy and recreate a Git remote branch in one command?
  • Avoiding merge commits in pull requests in git
  • Excluding certain files while 'git pull'
  • Hook git command into visual studio pre build step
  • Git uncomitted file confirmation when switching branches
  • Heroku — deployment from multiple computers?
  • EDIT: As @GoZoner said, basically its:

    1. git clone foo;
    2. cd foo;
    3. git submodule init;
    4. git submodule update;
    5. cd path/to/submodule;
    6. git checkout master;
    7. Make changes to the submodule
    8. git commit -am “Something”;
    9. git push origin (the superproject);

    Then when I clone the superproject in another computer (up to step 4), I want those changes to be saved, in the superproject.

  • Github: Forking after removing fork
  • Removing files using Git GUI
  • Can I “disable” git-clone over http?
  • Egit in eclipse missing tree
  • Visual Studio Git Not Updating and Commit Issues
  • How to synchronize two git-svn repos
  • 2 Solutions collect form web for “Make change to a git submodule, and keep the changes”

    I think you need to relax the ‘no commit to submodule’ constraint. There are two options:

    1. Commit your submodule changes to a submodule branch. It is your team’s branch and it is where your team put your submodule changes. When somebody clones the super project and updates the submodule they get the content of your team’s branch.
    2. Clone the submodule repository ‘right next to’ your super project repository and initialize the submodule to point to your clone. Then when you commit changes to the submodule they are committed to your clone. Anybody who clones the super project gets submodule content from your submodule clone.

    Otherwise, I don’t see a way to achieve your desire.

    You can checkout a separate branch for your changes. Don’t push that branch up. Changes that you do want to push, make that on one of the original branches. Merge that branch into your special branch that you don’t push up. Don’t do any other work on your special branch as you would then have to merge the other way. You can do that but it gets complicated.

    Git Baby is a git and github fan, let's start git clone.