Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GitHub, Git, how to submit changes to an upstream repository

Tags:

git

github

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 repository
  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. Are there 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.

like image 869
tsdbrown Avatar asked Feb 04 '10 11:02

tsdbrown


1 Answers

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?

like image 106
VonC Avatar answered Oct 26 '22 11:10

VonC