GIT : I keep having to merge my new branch

1

2

I have created a new branch and I'm working on it with others dev but for reasons when I want to push my new commits I always have to git merge origin/mynewbranch Otherwise I'm getting some errors:

 ! [rejected]        mynewbranch -> mynewbranch (non-fast-forward)
error: failed to push some refs to 'git@site.com/repo.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

You asked me to pull without telling me which branch you
want to merge with, and 'branch.mynewbranch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "mynewbranch"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

Why is it not automatic?

Thanks

mnml

Posted 2011-01-11T18:04:58.590

Reputation: 1 391

Did you read the documentation you were pointed to? If yes, could you say what exactly you need clarification on? – Benjamin Bannier – 2011-01-11T18:12:34.193

Well I was just wondering why it's not merging automaticaly anymore, just to know what I did wrong. – mnml – 2011-01-11T18:26:11.340

Answers

2

You did nothing wrong per se, but if the remote branch is updated (push to) from other developers, then your own contribution (push) won't be accepted directly.

git push (section "Note about fast-forwards") mentions:

You can perform "git pull", resolve potential conflicts, and "git push" the result. A "git pull" will create a merge commit C between commits A and B.

Alternatively, you can rebase your change between X and B on top of A, with "git pull --rebase", and push the result back. The rebase will create a new commit D that builds the change between X and B on top of A.

See also "I am not able to push on git?" for more.

VonC

Posted 2011-01-11T18:04:58.590

Reputation: 13 292

With a rebase my branch will be removed once it's done? Or will it just updated with the changes of the master branch? – mnml – 2011-01-12T09:14:27.087

1@mnml: a rebase means your branch get replayed on top of what has been fetch: it doesn't remove your branch. – VonC – 2011-01-12T09:29:30.877

Is it possible to rebase the master on top of the new branch? – mnml – 2011-01-12T11:51:37.357

@mnml: since master is often push, this isn't advisable. One usually rebases one's branch on top of master (git checkout mybranch; git rebase master) – VonC – 2011-01-12T12:09:50.870