【问题标题】:How to make a commit and pull-request on a branch in Github?如何在 Github 的分支上进行提交和拉取请求?
【发布时间】:2013-03-26 02:56:28
【问题描述】:

我认为似乎相当容易......

  • 我派生了一个名为abc 的存储库并将其克隆到本地。
  • 我派生出的原始仓库有一个名为2.1-stable 的分支
  • 我的仓库或本地没有这个分支
  • 我需要在这个分支上进行提交,并对我从 fork 分叉的原始 repo 进行 PR

这是我尝试过的:

// clone into a separate folder
git clone git:github.com/some/abc.git -b 2.1-stable ../ext
// set to my repo
git remote set-url origin git://github.com/me/abc.git

当我现在通过在某处添加空格并尝试提交来编辑文件时,我被告知:

local branch is ahead of remote by 1 commit

我尝试获取/拉取,但这会产生大量合并冲突(因为我只是“间隔”,很可能不是因为我的行为),但无论如何......我被卡住了。

第二次尝试是在我的仓库中添加分支:

git branch -a

这表明我正在寻找的分支位于remotes/upstream/2.1-stable。我试着补充一下:

git checkout -b 2.1-stable remotes/upstream/2.1-stable

但这感觉已经不对了,甚至尝试像这样提交

git push -u https://github.com/me/abc/2.1-stable.git 2.1-stable:2.1-stable

验证失败。

我可能在上面做错了 100 件事......

问题
有人可以告诉我如何正确执行此操作吗?

谢谢!

【问题讨论】:

    标签: git github branch git-commit pull-request


    【解决方案1】:

    remote set-url 更改了存储库的 url,这并不是您真正想要的,因为两个存储库都将参与设置。

    并且 git 中的分支与存储库克隆 url 无关,这就是您上次尝试身份验证失败的原因。


    git 的部分魔力在于您可以在您的存储库中配置多个遥控器。因此,您可以使用git clone https://github/me/abc 签出您自己的遥控器,然后您可以使用git remote add upstream https://github/some/abc 添加另一个遥控器(upstream(类似于origin)是此特定角色的常规名称)。如果您现在运行 git remote,您会看到两个推/拉 url 对,而不是一个。

    您还没有从upstream 获得任何数据,请运行git fetch upstream。现在数据在您的本地存储库中,您可以通过使用git checkout -b 2.1-stable remotes/upstream/2.1-stable 签出本地分支 来处理它(这是来自您的帖子,您离那里很近)。因为您没有对upstream 的提交访问权限,所以您在完成编辑/提交后所做的就是将新的本地分支推送到您自己的仓库origingit push origin 2.1-stable。现在更改的代码在 github 上,您可以通过 github 表单向该特定分支发送拉取请求到 upstream repo。

    PS:请注意,您可以将本地分支和远程分支命名为 origin 任何您想要的名称。这有助于明确这不是来自upstream 的确切2.1-stable 分支,但可能是具有许多提交的some-new-feature 分支恰好基于2.1-stable。始终可以在提交历史记录中检查分支的工作方式,但命名可以让其他浏览您的存储库的人更容易找出哪些代码是您存储库中不同分支的一部分。

    【讨论】:

    • 谢谢!这应该让我继续前进!
    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 2019-05-07
    • 2012-01-11
    • 2011-04-21
    • 2020-02-12
    • 2020-01-30
    • 2018-05-26
    • 2013-04-24
    相关资源
    最近更新 更多