我认为似乎很容易......
abc
的仓库,并在当地克隆了它。 2.1-stable
这就是我的尝试:
// 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件事......
问题
有人能告诉我如何正确地做到这一点吗?
谢谢!
答案 0 :(得分:4)
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
,则会看到两个推/拉网址对而不是一个。
您还没有从upstream
获得任何数据,要执行此操作git fetch upstream
。现在数据在您的存储库中是本地的,您可以通过使用git checkout -b 2.1-stable remotes/upstream/2.1-stable
签出本地分支来处理它(这是来自您的帖子,您在那里非常接近)。因为您没有upstream
的提交权限,而是在您完成编辑/提交后执行的操作是将新的本地分支推送到您自己的仓库origin
{{1} }。现在,更改的代码在github上,您已准备好通过github表单向该特定分支发送拉取请求到git push origin 2.1-stable
repo。
PS:请注意,无论您想要什么,都可以在upstream
命名您的本地分支和远程分支。这有助于明确这不是来自origin
的确切2.1-stable
分支,但可能是upstream
分支,其中有许多提交恰好基于{{1} }。如何在提交历史记录中检查分支的工作方式,但命名可以使浏览您的仓库的其他人更容易找出代码中不同分支的一部分代码。