Is there a way to fork from a specific branch on GitHub? … For example, moodle has many branches (1.9, 2.0 … and so on). Can a clone be performed of just branch 1.9 and not the master branch always? Is it possible to clone a specific branch onto my PC?
问题:
回答1:
I don’t know a native way yet, but you can do it following this recipe:
- Fork the repository in question (called ‘upstream’) on the GitHub website to your workspace there.
- Run the GitHub desktop application and clone the repository onto your PC.
- Use the GitHub desktop application to open a shell in the repository. (The
git
commands are not available from the default PowerShell unless you configure that manually.) Set the source repository as upstream:
git remote add upstream https://github.com/{user}/{source-repo}.git
Fetch the full upstream repository. (Right now, you only have a copy of its master branch.)
git fetch upstream
Make your file system copy the branch you want and give it any name:
git checkout upstream/{branch-in-question} git checkout -b temporary
Publish your repo using the GitHub desktop application.
- On the GitHub website, open your repository and click ‘settings’.
- Change the “Default branch” to ‘temporary’. (Just change the drop-down menu, you don’t need to click the “Rename” button.)
- Go back to your repository, go to the ‘branches’ tab, now you can delete the “master” branch.
Delete the master branch on your shell and make a new master branch:
git branch -d master git branch master git checkout master git -d temporary
Once more, publish your repo using the GitHub desktop application.
- On the GitHub website, open your repository and click ‘settings’.
- Change the “Default branch” back to the (new) ‘master’ branch.
- Go back to your repository, go to the ‘branches’ tab, now you can delete the “temporary” branch.
This should be what you were looking for. Perhaps GitHub will provide a more convenient way to do this in future (e.g., clicking “Fork” from a project’s branch results in exactly this behaviour).
回答2:
Cloning means that you create a copy of the whole repository in your account including all branches and tags. However you are free to switch and track branches however you like.
回答3:
Yes, you can clone the single branch. For example, you have a branch named release1.0. If you would like to clone this branch into your pc then use the following line of code:
$ git clone git@bitbucket.org:git_username/git_repository_example -b release1.0 --single-branch
回答4:
For those who don't like working with command-line. Here is a simple guide using the desktop client for GitHub:
Click the fork button of the repo on GitHub.com:
Make sure you have the desktop client installed
Click this button:
Clone the repo
- In the desktop client, select the desired branch
- Select the branch you'd like to work on and you're done
回答5:
I'm using bitbucket but I'm sure this would work for GitHub as well.
- Create a new repository
- Checkout the branch using GitExtensions
- Click Push to open the Push dialog
- Set the destination URL to the new repository
- Set the destination branch to "master"
- Push
Your new repository will have the full history of the one branch only (not all branches like forking will have).
回答6:
Switch to the branch you need in source repo Click "Fork". You'll get forked master and the branch you're in. I don't know how it works with more branches, but for my needs worked pretty well.
回答7:
A fast, alternative approach is to create your own new repo.
Go to https://github.com/new and make a new repo. Do not initialize with README.
Scroll down to get your git remote
Then:
git remote rm origin
git config master.remote origin
git config master.merge refs/heads/master
// Run code from above image
git push --set-upstream origin yourbranchname
You will have a new repo with the original repo's code and a branch that can be made into a pull request.