我已经将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.
答案 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请求更改为原始作者。为此,您应该按照以下步骤操作: