如何将分支推回到私有github仓库

时间:2013-02-13 17:05:23

标签: git github

我已经将github中的私人仓库克隆到我的本地机器上了。在我完成一些更改之后,我想将分支推回到github以提出合并(或者拉取请求,就像github调用它一样)。

我该怎么做?

我是github的新手(我通常使用bzr / launchpad,命令是bzr push lp:~<username>/<master-branch>/<name of the new child branch>git中的这个等价是什么?)。

[编辑:我发现我的措辞令人困惑,因为我对git的术语了解不多,我将重新描述我的所作所为]

bar是私人仓库)

$git clone git@github.com:foo/bar.git
$cd bar
$touch <some file> # ie., make some changes
$git commit ...
$ <<<<< NOW I need to push this back to github here.

2 个答案:

答案 0 :(得分:3)

根据您上面的评论和原始问题,您希望在github上执行拉取请求,但您已在本地修改master ...这是一个问题。你想要做的是先分支,进行更改,在本地提交,然后推送分支。然后你可以从那个分支在github上创建一个pull请求。

首先需要做的是解决这个问题:

  

git branch mytopicbranch
  git reset --hard origin / master

您现在有一个分支,并在本地重置master到远程仓库中的内容。您现在可以通过以下方式推送您的分支机构:

  

git push origin mytopicbranch

然后在github上,你将能够为该分支创建一个拉取请求。

正常流程将执行以下操作:

git clone <remote repo> 
<cd to directory>
git checkout -b mybranch 
<make changes> 
<commit changes>
git push origin mybranch
<create pull request on github>

编辑添加:这是您提出的原因;想要做一个“拉动请求”。如果您只想推master,您只需执行以下操作:

  

git push origin master

您的更改将致力于远程掌握。

答案 1 :(得分:2)

  

私人主回购不属于我(即,我没有权限将我的回购推回主回购)。我想我只能推回我的本地回购,并请求所有者将其合并到主

你似乎在这里混淆了很多东西。首先,存储库是一个单元。克隆存储库时,您将获得它的完整本地副本。

如果您克隆的存储库不属于您自己并且您没有写入权限,那么您将无法将任何更改推送到该存储库。如果是这种情况,您需要先将 fork 分配给您自己的GitHub帐户。为此,请单击存储库视图中的fork按钮。这将在您自己的帐户中创建存储库的副本,您将拥有该帐户的推送权限。

因此,如果您拥有存储库的本地克隆,则可以执行任何操作。什么都不会影响远程存储库,既不会影响原始存储库,也不会影响您的GitHub存储库。您可以根据需要创建任意数量的分支,并随意提交。请注意,分支不是Git中的某些构造。分支是提交的简单指针,因此创建分支并没有做太多,除非您真正开始提交,否则不会对您的结构产生任何影响。

如果您要提交到远程存储库,则可以使用git push执行此操作:

git push <remote> <local-branch>:<remote-branch>

因此,如果您想将本地master分支推送到名为test的远程分支origin上,您可以执行git push origin master:test。当您明确推送到远程分支test(之前不需要存在)时,您将不会触摸远程的master分支。 git push的其他变体只是上述命令的缩写。例如,git push <remote> <branch>可能是推送内容的最常见方式的第二种,它会将您的本地分支<branch>推送到跟踪远程分支(通常是具有相同名称的其他分支)。所以它或多或少等同于<branch>:<branch>。最常见的方法是git push,它将根据您的配置自行确定远程和分支,但为了安全起见,您可以明确指定它。

因此,回到您的用例,我假设您想要分叉其他人的存储库来对其进行更改,并建议将更改作为pull请求更改为原始作者。为此,您应该按照以下步骤操作:

  • 在GitHub上分叉存储库
  • 克隆自己的存储库(即fork)
  • 在您现在的本地存储库中进行更改
  • 将更改推送到您的分支中(任何分支都可以,但为了清晰起见,建议使用单独的分支)
  • 在GitHub上浏览您的分支时,单击拉取请求按钮以根据您推送的分支创建一个
相关问题