在GitHub上创建远程分支

58

在SVN中,我至少有两种方法可以创建一个分支:

svn cp /home/me/localcheckout/trunk /home/me/localcheckout/branches/newbranch
svn cp http://server/trunk http://server/branches/newbranch

第一种方式在本地创建,然后我必须提交整个分支。
第二种是在服务器上创建。

第二种方式的好处是我可以将本地主干svn切换到一些文件进行一些更改并仅提交几KB。

是否有可能使用Git来实现这一点?
是否有一种方法在GitHub上创建一个远程分支,然后将它们拉到我的本地仓库中?

我之所以问这个问题,是因为我正试图使用手机的互联网连接将几KB推送到一个新的远程分支,但当我推送时,它要推送大约400 MB!

Writing objects: 22% (54080/245586), 86.74 MiB | 13 KiB/s

请参阅Git - pushing a remote branch for a large project is really slow了解类似的问题。

3个回答

104

看起来 GitHub 有一个简单的 UI 可以创建分支。我打开了分支下拉菜单,它提示我“查找或创建分支...”。输入新分支的名称,然后点击出现的“创建”按钮。

要从 GitHub 检索您的新分支,请使用标准的git fetch命令。

create branch github ui

不过我不确定这会帮助您的根本问题,因为被推送到服务器的基础数据(提交对象)无论推送到哪个分支都是相同的。


这默认从主分支创建一个分支;如果我想从其他分支创建分支怎么办? - Chris Bobbe
我刚试了一下,如果你先在下拉菜单中选择其他分支,然后输入你的新分支名称,它会从你选择的分支创建。 - Matt McHenry

48

Git理论上应该能够了解服务器上已经存在哪些文件,除非您对树进行了巨大的更改并且需要发送新更改。

要创建一个具有当前状态副本的新分支

git checkout -b new_branch #< create a new local branch with a copy of your code
git push origin new_branch #< pushes to the server

请描述一下您所采取的步骤,以了解是什么原因导致您的存储库需要向服务器发送这么多内容。


2

在创建新分支之前,最好的做法是在本地机器上拥有最新的存储库。按照以下步骤进行无误的分支创建。

 1. $ git branch (check which branches exist and which one is currently active (prefixed with *). This helps you avoid creating duplicate/confusing branch name)
 2. $ git branch <new_branch> (creates new branch)
 3. $ git checkout new_branch
 4. $ git add . (After making changes in the current branch)
 5. $ git commit -m "type commit msg here"
 6. $ git checkout master (switch to master branch so that merging with new_branch can be done)
 7. $ git merge new_branch (starts merging)
 8. $ git push origin master (push to the remote server)

我参考了这篇博客文章,并认为它是一种更简洁的方法。


问题是如何远程创建并推送,而不是本地创建并推送。我已经在问题中说明了为什么我推送时会使用大量数据。你有没有读过问题和已有的答案? - opticyclic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接