How do you fork your own repository on GitHub?
GitGithubVersion ControlGit ForkGit Problem Overview
I have a public repository on GitHub. I want to replicate/copy it and work on a new project based on this repository, but I don't want to affect how it is now. I tried forking it using the GitHub UI but it didn't do anything.
Git Solutions
Solution 1 - Git
I don't think you can fork your own repo.
Clone it and push it to a new repo is good but you need to:
git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all
(see git push
)
See the all process described at "Fork your own project on GitHub".
Six years later (2016), you now have the GitHub importer which allows you to import a repo from another source... including GitHub.
See "Importing a repository with GitHub Importer"
narf's answer (upvoted) also illustrate that process.
That will allow you to create a new repository and import the full history of the old one into the new one, using its GitHub url.
Again: what you get is a copy, not a real fork: you cannot make pull request from the new repo to the old one.
Again (bis), as stated in the comments by mpersico
, this is not a TRUE FORK.
> If I have a foo which is the canonical source repo for an open source project that I want other people to fork and have access to do PR, then I do not want to work in that repo, I want a fork I can use to issue proper PRs against my project.
I have solved this my creating a second account in GitHub and forking to that.
Solution 2 - Git
A super easy way to do it in 30 seconds from the GitHub website:
- Copy your repo's URL. Ex:
https://github.com/YourName/YourOldRepo
(hint: it's the URL when you look at your repo's main page on github. - Click the
+
icon in the top right corner.
- Select "Import repository".
- Where it asks for the "Old URL", paste the URL you copied at step #1
- Enter the name of your new repo and click
Begin Import
. - That's it! You now have a copy of the full repo, with all commit history and branches!
Limitations: It's not actually a real fork. It's a copy of the repo. It won't allow to do pull requests back and forth.
Solution 3 - Git
- git clone https://github.com/YOURREPO.git TargetRepoName
- cd TargetRepoName/
- git remote set-url origin https://github.com/TargetRepoName.git
- git push -u origin master
Solution 4 - Git
Simplest way to achieve the desired effect is to create a new repository, then select the import option and supply the URL of the repo you wish to fork.
Images below will help:
Solution 5 - Git
You can now mark the base repository as a template (in Settings, mark it as a Template repository) and on the main page of the repo, click Use this template to create your second repo
Github Help: creating a template repository creating a repository from a template
Solution 6 - Git
Just clone it, create new blank repo, and push to it.
Solution 7 - Git
Although it is not possible to fork your own repo into the same account, it can be done into an self-owned Organization account, which can be easily created for free via the '+' button.
The main advantage of this option is that the new repo is a real fork of the original one, and not just a clone. This means that you can, for example, update changes in the orginal repo into the new one (which is not the case for a cloned repo).
The only disadvantage I see is that the forked repo won't appear under the user profile but under the organization one.
Solution 8 - Git
I followed these official instructions for "Duplicating a repository" and it seemed to work.
https://help.github.com/articles/duplicating-a-repository/
> To create a duplicate of a repository without forking, you need to run a special clone command against the original repository and mirror-push to the new one. This works with any git repository, not just ones hosted on GitHub.
Solution 9 - Git
The accepted solution of VonC, unfortunately, did not work for me as I got
> remote: Repository not found
What did work was the following:
- Create a new_repo at github
- git clone new_repo
- cd new_repo
- git remote add upstream old_repo.git
- git pull upstream master
- git push origin master
I got all the above from here.
Solution 10 - Git
For non tech savvy using GitHub, here is one simple solution as an alternative to other great answers above. What you need is just a GitHub Desktop application.
- Open your own project repo from browser, and download as a zip, eg
your-project-master.zip
. - Unzip and rename it as your new repo.
- Open GitHub Desktop, and add your new repo by browsing it to your unzipped local path new repo.
- Publish it to your github, by clicking the publish button. Don't forget to add the name and the description :)
Solution 11 - Git
Just tried this, and it worked:
- Fork your repo into an organization account
- Rename it
- Transfer ownership back to yourself
Solution 12 - Git
When you create a new repo, you can import from another repo with the repo .git url. It took me 30 seconde.
Solution 13 - Git
- create a new empty repo on github webfrontend
- in a clone of the older repo, replace the remote and push:
git remote remove origin
git remote add origin [email protected]:account/new.git
git branch -M main
git push -u origin main
This combines the answer of @mcepl with the comment of @wadesworld and is very similar to the official solution shown when creating a fresh repository on github (under the headline "…or push an existing repository from the command line")