diff options
Diffstat (limited to '_posts/2009-06-11-forking.markdown')
| -rwxr-xr-x | _posts/2009-06-11-forking.markdown | 95 |
1 files changed, 4 insertions, 91 deletions
diff --git a/_posts/2009-06-11-forking.markdown b/_posts/2009-06-11-forking.markdown index 5c472df..bb06e35 100755 --- a/_posts/2009-06-11-forking.markdown +++ b/_posts/2009-06-11-forking.markdown @@ -2,97 +2,10 @@ layout: default title: Forking a project description: How to fork a project, submit changes, and pull from other repos in the fork network -categories: collaborating popular -main_category: collaborating --- -This guide will step you through the process of forking, pushing your changes, -and pulling in changes from the upstream repo. +This page has moved. If the redirect fails, [click me](fork-a-repo) -We'll use [github-services](http://github.com/github/github-services) as an -example to fork, submit a change, and re-sync with the forked repo. - -All of the examples on this page assume you're working in the `master` branch. - -Note that this works for pulling from a forked repository to the original as well. - -Setting up ----------- - -First, create your fork. Click the *Fork* button on the project's page. You -will be presented with the information for your newly forked repository: - - - -Now clone the fork locally. Make sure you use the *Private URL*, __not__ the -*Public URL*. - -<pre class="terminal">$ git clone git@github.com:billyanyteen/github-services.git</pre> - -Once the clone is complete your repo will have a remote named "origin" that -points to your fork on github. Don't let the name confuse you, this __does -not__ point to the original repo you forked from. To help you keep track of -that repo we will add another remote named "upstream": - -<pre class="terminal">$ cd github-services -$ git remote add upstream git://github.com/github/github-services.git -$ git fetch upstream -</pre> - -Note that we used the public clone URL for upstream, so we can't push changes -directly to it. We probably don't have permission to do that anyway, which is -why we're creating a fork in the first place. If the upstream repo is private, -you must use its private URL. - -Pushing your changes --------------------- - -Now that we've got our fork, we need to make a few changes and commit them -locally. Once you've done this, it's time to push your updated branch: - -<pre class="terminal">$ git push origin master</pre> - -Once you've pushed your commit(s), inform the project owner of the changes so -they can pull them into their repo. The best way to do this is by [sending a -pull request](/pull-requests/). - -Pulling in upstream changes ---------------------------- - -Some time has passed, the upstream repo has changed and you want to update your -fork before you submit a new patch. There are two ways to do this: - -<pre class="terminal">$ git fetch upstream -$ git merge upstream/master</pre> - -<pre class="terminal">$ git pull upstream master</pre> - -`git pull` is a more direct way, but the merge it performs can be confusing if -the user doesn't expect it and a merge conflict results. `git fetch` will also -grab all branches, where `git pull` grabs only the one specified. - -If you have local commits that are not in the upstream branch, a normal merge -will occur. If your local commits are in the upstream branch, a fast-forward -merge will be done, moving your local branch to the same commit as -upstream/master. If both repos have edits to the same location in the same -file, you may run into a merge conflict. Conflicts must be resolved by hand and -a commit made to complete the merge. - -Now that your local branch has been updated, commit your changes, push, and -[send a pull request](/pull-requests/). - -You may wish to do the fetch and merge manually, instead of letting git-pull do -it for you. This can help avoid headaches caused by mysterious merge conflicts. - -Deleting the forked repository ------------------------------- - -To remove the fork, delete it like any repo: click the *Admin* button, then the -*Delete This Repository…* button. - -Additional resources --------------------- - -* [hub](http://github.com/defunkt/hub) -* [github-gem](http://github.com/defunkt/github-gem) -* [Rails on the Run forking tutorial](http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch) +<script type="text/javascript"> + window.location = '/fork-a-repo' +</script> |
