On Oct 1, 5:57 pm, David Doria <daviddo...@gmail.com> wrote:
> I cloned a repository, created an Experimental branch, then worked on
> two files:
> 1) edit a.h
> 2) edit b.h
> 3) git add .
> 4) git commit -m "worked on a and b"
> Now I have decided that a.h is ready to push into the main repository,
> but b.h is not. Is there a way to push only a.h even though the work
> on both files is combined together in a single commit?
No, there's no way to do this, but you should not think in terms of
files when working with Git.
Git works with snapshots of the entire tree (each commit is a snapshot
of the whole work tree).
Hence, if you have a commit which changes both files but you only want
to publish changes made to one of these files, you have to split this
commit (changeset) into two or more commits so that you have a commit
which contains only the changes made to one file (and another one with
changes to the other file). After this, you'll be able to push
specific commit to a respective remote branch.
To do this you can use different approaches.
If the commit representing changes to these files is single and is at
the tip (HEAD) of you branch, just do
$ git reset HEAD^
and then commit the changes one by one, making one (or more) commits.
If the changes span several commits you will have to use `git rebase`.
Now you will have a commit which represents changes to just one file
and you can use its name to update a relevant remote branch.
Note that the whole approach smells bad. I think you should consider
creating one or more branches to develop "unstable" features and one
"stable" branch into which you will merge the needed changes and which
you will push.
You received this message because you are subscribed to the Google Groups "Git
for human beings" group.
To post to this group, send email to git-us...@googlegroups.com.
To unsubscribe from this group, send email to
For more options, visit this group at