4

我已经将 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.
4

2 回答 2

4

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

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

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 起源大师

并且您的更改将提交到远程掌握。

于 2013-02-13T17:24:10.030 回答
2

私人主仓库不归我所有(即,我无权将我的仓库推回主仓库)。我想我只能将我的本地 repo 推回去,并请求所有者将其合并到 master

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

如果您克隆了一个不属于您自己并且您没有写入权限的存储库,那么您将无法将任何更改推送到该存储库。如果是这种情况,您需要先将其分叉到您自己的 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根据您的配置自行确定远程和分支,但为了安全起见,您可以明确指定它。

因此,回到您的用例,我假设您想要 fork 其他人的存储库以对其进行更改,并将该更改作为拉取请求提交给原始作者。为此,您应该按照以下步骤操作:

  • Fork GitHub 上的存储库
  • 克隆你自己的存储库(即 fork)
  • 在您现在的本地存储库中进行更改
  • 将更改推送到您的 fork 中(任何分支都可以,但为了清楚起见建议使用单独的分支)
  • 在 GitHub 上浏览你的 fork 时,单击 pull request 按钮以根据你推送的分支创建一个
于 2013-02-13T17:44:42.300 回答