如何将分支机构推回到私有github回购

如何将分支机构推回到私有github回购,git,github,Git,Github,我已将github中的私有回购克隆到本地机器。在完成一些更改后,我想将分支推回到github,以提出合并(或者github称之为pull请求) 我该怎么做 我是github的新手(我通常使用bzr/launchpad,命令是bzrpush-lp:~/。这在git中的等价性是什么?) [编辑:我发现我的措辞令人困惑,因为我对git的术语不太了解,我将重新描述我所做的事情] (bar是私人回购协议) $git克隆git@github.com:foo/bar.git $cd条 $touch#即进行一些

我已将github中的私有回购克隆到本地机器。在完成一些更改后,我想将分支推回到github,以提出合并(或者github称之为pull请求)

我该怎么做

我是github的新手(我通常使用bzr/launchpad,命令是
bzrpush-lp:~/
。这在
git
中的等价性是什么?)

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

bar
是私人回购协议)

$git克隆git@github.com:foo/bar.git
$cd条
$touch#即进行一些更改
$git提交。。。

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

首先,您需要做的是:

git branch mytopicbranch
git重置--硬原点/主原点

您现在有了一个分支,并在本地将其重置为远程回购中的状态。现在,您可以使用以下工具推送分支:

git推送源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>
git克隆
git签出-b mybranch
git推送源mybranch
编辑以添加:这是您询问的原因;想要做一个“拉请求”。如果您只想按下
master
,只需执行以下操作:

git推送源主机

您所做的更改将被远程提交给master

私人主回购协议不归我所有(即,我无权将我的回购协议推回到主回购协议)。我想我只能将我的本地回购协议推回,并请求所有者将其合并到主回购协议中

你似乎把这里的很多事情搞混了。首先,存储库是单个单元。克隆存储库时,将获得该存储库的完整本地副本

如果您克隆了一个存储库,该存储库不属于您自己,并且您没有写入权限,那么您将无法将任何更改推送到该存储库。如果是这样的话,您需要首先将其转移到您自己的GitHub帐户。为此,请单击repository视图中的fork按钮。这将在您自己的帐户中创建存储库的副本,您将对其拥有推送权限

因此,如果您有存储库的本地克隆,您可以做任何您想做的事情。任何东西都不会影响远程存储库,无论是原始存储库还是GitHub fork。您可以创建任意数量的分支,并在任何地方提交。注意这里的分支不是Git中的某种构造。分支是指向提交的简单指针,因此创建分支没有什么作用,除非您真正开始提交,否则不会对您的结构产生影响

如果有要推送到远程存储库的提交,可以使用
git push

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

因此,回到您的用例,我假设您希望分叉其他人的存储库来对其进行更改,并将该更改作为请求提交给原始作者。为此,您应遵循以下步骤:

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

你是说你把它克隆到本地机器上,然后分支了一个分支?对不起,我的意思是
克隆
(我对git术语感到很困惑!)在git中,你克隆了一个回购协议,而不是分支,这不应该是同一回事吗?(即,获得一份大师的副本)@CharlesB是的,好的,我的意思是
克隆一份repo
。正如我所说,git的术语让我非常困惑。
mytopicbranch
的价值是什么?私人回购协议的名称?(即,
bar
如我的示例中所示?)如果不进行分支,则不会出现拉取请求,这就是您所要求的-它将作为。。。大师,很抱歉问这个(应该很简单)问题,但是在我做了“git克隆…”之后,我会得到一个目录,然后我应该cd到那个目录并进行签出?这不会创建另一个目录吗?该目录包含所有分支和所有历史记录;与其他系统不同,您不签出分支,而是复制整个存储库。使用git的“签出”管理修订,并且您在该目录中看到的文件是当前“签出”的文件。(别难过,我花了一个星期的时间才把脑袋绕到git上)好了,现在这很有意义,谢谢!在我的头脑中,签出、克隆和<
git push <remote> <local-branch>:<remote-branch>