git 无法将我的本地分支与远程合并
git unable to merge my local branch with remote
我克隆了我组织的 git 存储库,如下所示
git clone https://giturl/my_org_name/runbooks
它要求我的 username/password 并成功克隆它。
然后我检查了一个新的本地分支
git checkout -b patchv1
我做了几次提交。
然后我结帐到 master 并将我的 patchv1 分支与 local 大师.
git checkout master
git pull
git merge patchv1
下面是我的git状态输出
git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
git remote show origin
* remote origin
Fetch URL: https://giturl/my_org_name/runbooks.git
Push URL: https://giturl/my_org_name/runbooks.git
HEAD branch: master
Remote branches:
upgrade-schedules tracked
................... .....
patchv2 tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
我想将我的 local master 分支推送到远程源,但名称不同。因此,我将以下命令与 -u 一起使用,以便创建远程分支
git push -u origin master:newpatchv2
低于错误
remote: Permission to my_org_name/runbooks.git denied to my_username. fatal:
unable to access 'https://giturl/my_org_name/runbooks.git/': The
requested URL returned error: 403
在 webUI 中,我试图在远程仓库的 master 分支中编辑一个文件,但出现以下错误,
"You’re editing a file in a project you don’t have write access to.
Submitting a change to this file will write it to a new branch in your fork **my_username/runbooks**, so you can send a pull request."
我进一步阅读了这方面的内容,发现了以下陈述
对分叉存储库所做的更改可以通过拉取请求与原始存储库合并。拉取请求敲了仓库所有者并告诉他“我做了一些更改,如果你喜欢,请将这些更改合并到你的仓库”。另一方面,在本地机器(克隆存储库)上所做的更改可以直接推送到上游存储库。为此,用户必须具有存储库的写入权限,否则这是不可能的。如果用户没有写入权限,唯一的办法就是通过分叉请求。因此,在这种情况下,首先将在克隆存储库中所做的更改推送到分叉存储库,然后创建拉取请求。
因此,我转到了我组织的 github webui 存储库页面 (url - https://giturl/my_org_name/runbooks) 并单击了 fork。它说,
"You've already forked runbooks"
并向我展示了下面的 repo
my_username/runbooks
现在,根据我读到的声明,我可以将我的更改推送到我的 forked repo my_username/runbooks 并且然后创建一个拉取请求。正确的?但是在我的组织的 github webui runbooks 回购页面中,如果我点击“New Pull Request”
在“比较变化”下,我看到如下
base: master <--- compare: <drop_down>
当我点击 drop_down 时,我根本找不到 my_username/runbooks 存储库。
两个问题:
如何将我的本地 master 分支推送到我的分叉仓库 - my_username/runbooks?由于我无法在我的组织的存储库中创建新的远程分支,我是否需要以某种方式更改我的远程源?
我的分叉回购的 url 如下所示
https://giturl/my_username/runbooks?organization=my_username&organization=my_username
一旦我将本地 master 推送到我的分叉仓库 - my_username/runbooks,
如何在我的 my_org_name/runbooks 回购中创建拉取请求,因为 my_username/runbooks 也未在 [=71] 中列出=]base 或“比较更改”页面的 比较。
抱歉,如果问题很基础。但我很难理解这一点,感谢任何帮助。
专业提示:切勿更改回购分支上的 master
分支,或来自上游的任何分支。您的主分支将从上游分叉,您将无法将上游拉入本地分支。
在您的工作流程中,更有意义的是在进行提交之前,创建一个新的本地分支,git checkout -b newpatchv2
,然后提交给它。将 newpatchv2
推送到您的分支,然后在 upstream 存储库中创建一个 PR 以请求他们提取您的更改。他们可能不会按原样接受 PR,如果你的更改已经在你的 master 分支中,你将无法与远程主服务器同步备份,因为通过推送有不同的历史记录更改为您的本地 master(尚未)在上游并且可能永远不会(等待 PR 批准)。请记住,git 是一个 分布式 变更控制系统,其他贡献者的 PR 可能会在您自己的之前进入上游 master。
如果你最终分散了你的本地主分支,最简单的解决方法是将你的本地主分支分支到一个新分支(比如 old-master),然后删除你的本地主分支并拉回远程主分支吃下。与 master 同步后,保持这种状态 - 分支 offf master 进行更改,然后将这些更改拉回到 into master 只有当他们已经合并到上游主机。
现在让我们回答您的问题。
How to push my local master branch to my forked repo - my_username/runbooks ? Should I need to change my remote origin somehow since I cannot create a new remote branch in my org's repo?
由于 git
是一个 分布式 版本控制系统,因此拥有多个遥控器非常好。在这种情况下,您甚至可能有 3 个远程 - 您组织的远程、您的个人分支和组织分支的上游远程。 origin
upstream 唯一特别之处在于,如果你克隆一个 repo,它会自动在本地 repo 中创建一个远程源,并将其命名为 origin
.
您可以添加更多来源:
git remote add myfork https://github.com/.../..
那么你可以 git push myfork
而不是 git push origin
。请注意,我没有指定分支。保持简单!在您认为自己是 git 专家之前,在 提交之前分支 并保持远程分支与本地分支相同。
Once I push my local master to my forked repo - my_username/runbooks, how to create a pull request in my my_org_name/runbooks repo as my_username/runbooks is not being listed either in the base or in the compare of "Compare Changes" page.
有一个“跨分支比较”按钮,可以让您select 为您的 PR 目的地选择不同的分支。请参阅 github 中的此文档以获取其外观的屏幕截图:
我克隆了我组织的 git 存储库,如下所示
git clone https://giturl/my_org_name/runbooks
它要求我的 username/password 并成功克隆它。
然后我检查了一个新的本地分支
git checkout -b patchv1
我做了几次提交。
然后我结帐到 master 并将我的 patchv1 分支与 local 大师.
git checkout master
git pull
git merge patchv1
下面是我的git状态输出
git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
git remote show origin
* remote origin
Fetch URL: https://giturl/my_org_name/runbooks.git
Push URL: https://giturl/my_org_name/runbooks.git
HEAD branch: master
Remote branches:
upgrade-schedules tracked
................... .....
patchv2 tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
我想将我的 local master 分支推送到远程源,但名称不同。因此,我将以下命令与 -u 一起使用,以便创建远程分支
git push -u origin master:newpatchv2
低于错误
remote: Permission to my_org_name/runbooks.git denied to my_username. fatal:
unable to access 'https://giturl/my_org_name/runbooks.git/': The
requested URL returned error: 403
在 webUI 中,我试图在远程仓库的 master 分支中编辑一个文件,但出现以下错误,
"You’re editing a file in a project you don’t have write access to.
Submitting a change to this file will write it to a new branch in your fork **my_username/runbooks**, so you can send a pull request."
我进一步阅读了这方面的内容,发现了以下陈述
对分叉存储库所做的更改可以通过拉取请求与原始存储库合并。拉取请求敲了仓库所有者并告诉他“我做了一些更改,如果你喜欢,请将这些更改合并到你的仓库”。另一方面,在本地机器(克隆存储库)上所做的更改可以直接推送到上游存储库。为此,用户必须具有存储库的写入权限,否则这是不可能的。如果用户没有写入权限,唯一的办法就是通过分叉请求。因此,在这种情况下,首先将在克隆存储库中所做的更改推送到分叉存储库,然后创建拉取请求。
因此,我转到了我组织的 github webui 存储库页面 (url - https://giturl/my_org_name/runbooks) 并单击了 fork。它说,
"You've already forked runbooks"
并向我展示了下面的 repo
my_username/runbooks
现在,根据我读到的声明,我可以将我的更改推送到我的 forked repo my_username/runbooks 并且然后创建一个拉取请求。正确的?但是在我的组织的 github webui runbooks 回购页面中,如果我点击“New Pull Request”
在“比较变化”下,我看到如下
base: master <--- compare: <drop_down>
当我点击 drop_down 时,我根本找不到 my_username/runbooks 存储库。
两个问题:
如何将我的本地 master 分支推送到我的分叉仓库 - my_username/runbooks?由于我无法在我的组织的存储库中创建新的远程分支,我是否需要以某种方式更改我的远程源?
我的分叉回购的 url 如下所示
https://giturl/my_username/runbooks?organization=my_username&organization=my_username
一旦我将本地 master 推送到我的分叉仓库 - my_username/runbooks, 如何在我的 my_org_name/runbooks 回购中创建拉取请求,因为 my_username/runbooks 也未在 [=71] 中列出=]base 或“比较更改”页面的 比较。
抱歉,如果问题很基础。但我很难理解这一点,感谢任何帮助。
专业提示:切勿更改回购分支上的 master
分支,或来自上游的任何分支。您的主分支将从上游分叉,您将无法将上游拉入本地分支。
在您的工作流程中,更有意义的是在进行提交之前,创建一个新的本地分支,git checkout -b newpatchv2
,然后提交给它。将 newpatchv2
推送到您的分支,然后在 upstream 存储库中创建一个 PR 以请求他们提取您的更改。他们可能不会按原样接受 PR,如果你的更改已经在你的 master 分支中,你将无法与远程主服务器同步备份,因为通过推送有不同的历史记录更改为您的本地 master(尚未)在上游并且可能永远不会(等待 PR 批准)。请记住,git 是一个 分布式 变更控制系统,其他贡献者的 PR 可能会在您自己的之前进入上游 master。
如果你最终分散了你的本地主分支,最简单的解决方法是将你的本地主分支分支到一个新分支(比如 old-master),然后删除你的本地主分支并拉回远程主分支吃下。与 master 同步后,保持这种状态 - 分支 offf master 进行更改,然后将这些更改拉回到 into master 只有当他们已经合并到上游主机。
现在让我们回答您的问题。
How to push my local master branch to my forked repo - my_username/runbooks ? Should I need to change my remote origin somehow since I cannot create a new remote branch in my org's repo?
由于 git
是一个 分布式 版本控制系统,因此拥有多个遥控器非常好。在这种情况下,您甚至可能有 3 个远程 - 您组织的远程、您的个人分支和组织分支的上游远程。 origin
upstream 唯一特别之处在于,如果你克隆一个 repo,它会自动在本地 repo 中创建一个远程源,并将其命名为 origin
.
您可以添加更多来源:
git remote add myfork https://github.com/.../..
那么你可以 git push myfork
而不是 git push origin
。请注意,我没有指定分支。保持简单!在您认为自己是 git 专家之前,在 提交之前分支 并保持远程分支与本地分支相同。
Once I push my local master to my forked repo - my_username/runbooks, how to create a pull request in my my_org_name/runbooks repo as my_username/runbooks is not being listed either in the base or in the compare of "Compare Changes" page.
有一个“跨分支比较”按钮,可以让您select 为您的 PR 目的地选择不同的分支。请参阅 github 中的此文档以获取其外观的屏幕截图: