Best method for cloning a github repository to another github repository - github

I'm new to git and GitHub so sorry if this question is simplistic. A vendor has developed the WordPress theme for our website and has created GitHub repo of the theme. We want to clone the theme to our an organization which has been set up on our enterprise GitHub account. However, I'm not quite understanding the process for the process for doing this. When I search cloning it's the answer always is discusses cloning from a GitHub repo to a local repo, whereas we want to clone from a private GitHub repo to a repo in the setup in our organization.

Transferring a repo would mean you are the owner of the original repo.
If you are not the owner of that vendor theme repository, you do have to clone it locally, and then:
change its remote to refer to a new empty repo created in your GitHub organisation
push everything
That is:
git clone --mirror git#github.com:user/repo.git
cd repo.git
git remote set-url origin git#yourGitHUb.com:org/empty-repo.git
git push --mirror

In this case,I guess you need to transfer the ownership of the repo. You can refer this
https://help.github.com/articles/transferring-a-repository/
Hope this helps!
EDIT 1:If you just need a copy of the original repo (Note: further changes in original repo will not reflect in yours unless you do a pull after forking it)
https://help.github.com/articles/fork-a-repo/

Related

GitHub shared repository

I want to share on my personal GitHub repositories page a repository uploaded by my collaborator on his personal GitHub page. I have collaborator permission in the repo's admin settings and I can see the repository in my GitHub after clicking on my image and clicking on repositories. Moreover, the repository is public.
However, the repo is not visible on my GitHub repositories page.
How can I link the repository on my personal GitHub repository page?
I was thinking to fork the repository, but in such a way if some of us modify the original repository the changes are not visible in the one I forked. Is there a better way to do it?
If forking allows you to list that repository in your GitHub repository pages, then all you need to do is:
make any change in the original repository (since your have collaborator rights)
do not commit directly in your fork
fetch from the original repo URL (named "upstream"), merge upstream/main and push from a local clone of your fork, to update that forked repository.
That is:
git clone /url/fork
cd fork
git remote add upstream /url/original/repo
# after modifications to the original repo content (new commits on main)
git fetch upstream
git merge upstream/main
git push

How to open a pull request on github for an improvement in a bitbucket fork?

I cloned a github repository into our Bitbucket account. Similar to https://gist.github.com/sangeeths/9467061.
I fixed a bug in my repository located in bitbucket. I'd like to open a pull request on the original github repository that fixes the bug.
If my fork were located on github, I would simply follow these instructions, but since my fork is on bitbucket, I don't know where to start.
How can I open a pull request from my bitbucket repo to the original github repo ?
You can:
clone the original GitHub repository to a different folder
add your local BitBucket repo as a remote
fetch your fix branch (make sure you fix is done in its own branch, not master)
create a PR using the cli/cli GitHub command line interface gh pr create
That is:
git clone https://github.com/original/repo
cd repo
git remote add bb ../yourLocalBitbucket/repo
git fetch bb
git checkout bb/fix
gh pr create
The gh pr create command will do the work for you:
When the current branch isn’t fully pushed to a git remote, a prompt will ask where to push the branch and offer an option to fork the base repository.

Push committed files to GitHub

I have repository in GitHub. I edited files in my PC, committed them and now I want to push these files to GitHub. How can I do it?
If the files are already cloned from a github repository git push will do it.
cd /path/to/repo
git push
If this local repo does not belong to any github repo, create a repository in github. This will give you a git repo url like git://github.com/username/project.git. Now you need to add this url as remote to your existing local repository
cd /path/to/repo
git remote add origin git://github.com/username/project.git
Then you can commit your changes and push it
git push
Go to github and create a repository under your account (if you haven't already). If you've done that, follow the instructions for pushing code from an already existing repository.

Fork from a branch in github

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?
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).
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.
No command line needed. Just create a new branch in your forked repository in GitHub. GitHub will ask you if you want to clone/mirror this new branch from the upstream repository. You can give any name to the new branch.
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
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
I'm posting here the method I've used.
Like the OP I wanted to only copy/fork one branch. But couldn't find an easy way.
in your repo create a new branch. It doesn't need to have the same name as the branch you want to fork
once created, verify that it is the selected branch, and click "Compare"
reverse the order of comparison (I have a userscript for that, see my profile if it's something you want to test).
the "base" repository must be yours, with the branch you've created
the "head" repository is the original, and the branch is the branch you want to fork
hit "create pull request" and continue until the PR is applied
That's it. You have the branch forked.
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).
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.
SOLUTION:
For remote repository on GitHub and local repository
After fork all branches to your GitHub repository, you can delete Redundant branches in your GitHub repository.
And then you can only clone the branches you need to local.
Step One
Step Two
Only For local repository
git clone -b <branch name> --single-branch <repository>
If you want to further save your disk space, you can clone remote repository without history:
git clone -b <branch name> --depth 1 <repository>
notice: --depth implies --single-branch unless --no-single-branch is given.
https://git-scm.com/docs/git-clone
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.

Github: how to checkout my own repository

I am very new to GitHub.
I have created a GitHub repository and pushed it from my computer.
Now I need to work on it from another computer.
How can I checkout my own repository? Should I fork it as for other people's repositories?
It seems to me a bit silly to fork my own repository, though.
On the project page (http://github.com/you/project) there will be a link on the right at the bottom of project tools list with a path to a .git repo
Open a terminal and type:
git clone [link to repo here]
That will create a local clone of the repo you can work on, then if you follow the instructions on GitHub to add a remote server you can push your changes back.
Syncing files back and forwards is just as easy;
Computer A (Had the original git repo)
Computer B (Has the cloned repo)
Make some changes on Computer A, then run
git push origin master
Go to computer B, then run
git pull origin master
To sync your new changes, make some changes on computer B then push back
git push origin master
You don't need to fork it on the site, you can just clone your repository. There are links on your repository's page for cloning it with the SSH, git, or HTTP protocols. (Since it's your own, you probably want the SSH one.)
Information about how to clone a repository will come up very early in any git tutorial, so I'm not sure it's worth adding much more here - you might want to start with the one in Pro Git, for example:
http://progit.org/book/ch2-1.html#cloning_an_existing_repository