tags:

views:

167

answers:

1

We've been using GIT internally for quite some time now and have a pretty good work flow within our team. Yesterday we wanted to submit some bug fixes to a project on Github. That is something new to us. So this is what we did:

  1. Cloned their repo
  2. Forked the upstream
  3. Added our fork as a remote
  4. Fixed some bugs in the master branch
  5. Pushed master to our remote fork
  6. Sent a pull request
  7. They pulled the changes
  8. git fetch origin
  9. On master: git merge origin/master

Is this the correct way to do things? We ended up with an extra "Merge commit 'origin/master'" message that other developers don't seem to get. Also in the log we can see our commits twice.

Everything seems to be OK but it just feels wrong. Does anyone know of any good github workflow pages. The git help pages seem to miss the how to do the local changes part.

I figure if we'd rolled back our master branch after pushing the changes to the fork we wouldn't have this problem, but that does not feel right either.

Any help would be much appreciated!

+2  A: 

It is one way.
I prefer cloning my GitHub repo (the one forking a GitHub project "theirRepo"), instead of directly cloning an existing "theirRepo".

And I would recommend rebasing your master branch on top of "theirRepo", instead of merging.
I believe that would avoid seeing your commit twice in the log, and would avoid the extra "merge" commit message.

  1. Fork theirRepo in myRepo
  2. clone myRepo
  3. Added "theirRepo" as a remote
  4. Fixed some bugs in the master branch
  5. Pushed master to our remote fork "myRepo"
  6. Sent a pull request
  7. They pulled the changes
  8. git fetch theirRepo
  9. On master: git rebase theirRepo/master

See also various similar strategies discussed (for another case, but that can give you some ideas) in this SO question: How do I re-play my commits of a local git repo, on top of a project I forked on github.com?

VonC
Thanks for you help, really appreciate it. If I rebase after the fetch that will undo my commits, apply their commits (which now includes mine from the pull) and replay mine back on top right? Does git recognise the fact that the commits are the same or have I miss understood something here?
tsdbrown
@tsdbrown Git should detect similar commits (same SHA1)
VonC
Awesome, I hoped that would be the case. I'll give this ago next time.
tsdbrown
@tsdbrown: don't hesitate to post here an answer reflecting how this solution worked for you;)
VonC