gpt4 book ai didi

git pull 远程主在分离的头部

转载 作者:太空狗 更新时间:2023-10-29 13:01:11 25 4
gpt4 key购买 nike

这一直困扰着我关于 git 的问题。我有一个包含多个 Remote 的存储库,我需要将修补程序应用到 Remote 的主分支。所以,我尝试这样做:

git fetch remote1 master
git checkout remote1/master

但是,我总是以超脱的头部状态告终。 check out Remote 的主人并应用补丁的正确方法是什么?

最佳答案

这些命令都不会给你一个分离的头。您正在做的其他事情是否还没有写在您的问题中?

git fetch remote1

这将获取与 remote1 的默认 refspec 匹配的任何内容.这通常意味着 remote1 上的所有分支除非你以不同的方式配置它。
git fetch remote1 master

上述命令获取 master来自 remote1并将其存储为 FETCH_HEAD .
git pull remote1/master

这个命令会出错,因为 remote1/master不是存储库的名称。

有几种方法可以解决这个问题,但这实际上取决于您要完成的任务。典型的方法是为要更新的远程分支创建一个本地分支,并 merge 相应的分支:
git checkout -b r1-master remote1/master
git merge other/master
git push

但是,目前尚不清楚这是否是您可以接受的工作流程。你能发布更多关于你想要完成什么的信息吗?

更新

感谢您使用实际使用的命令更新您的问题。
git fetch remote1 master

上面的命令抓取master的最新内容并存储在 FETCH_HEAD中.你想离开 master在这里让 Git 更新你的远程引用: git fetch remote1 .在这个指针处, remote1/master应该与服务器上的内容保持同步。
git checkout remote1/master

这是给你一个分离的命令 HEAD .远程引用与本地分支的处理方式不同(引用在 refs/heads 中)。当您 checkout 远程引用时,Git 会将您置于分离的 HEAD 状态。我相信这背后的想法是为了防止您破坏对远程分支的看法。远程 ref 可作为您上次获取时远程存储库状态的快照。让你向他们 promise 会破坏这种观点。本地分支是需要进行编辑的地方。

让我们做几个假设。首先,我将假设 remote1不是 origin并且您已添加此 Remote 以与除主要存储库之外的其他存储库进行交互。其次,我假设您有能力将代码推送到 remote1 .

在继续之前,让我们 确保 push.default设置为一个合理的值 .运行 git config --global push.default .如果没有返回,或者显示 matching ,那我们改一下吧。默认配置( matching )将尝试更新特定远程推送的所有引用。如果您不保持分支的本地版本是最新的,这会产生删除人们工作的副作用。更好的默认值是 upstream ,这只会 push 您所在的分支。设置它:
git config --global push.default upstream

在 Git 中添加补丁的典型方法是创建一个分支,制作补丁,将其 merge 到远程分支的本地表示中,然后将结果推送到远程分支。

让我们从创建远程 master 的本地分支开始:
git checkout -b r1-master remote1/master

现在我们有一个名为 r1-master 的本地分支我们可以更新( HEAD 不会在这个分支上分离)。

接下来,做你的工作。这通常涉及创建另一个分支并向其添加一系列补丁:
git checkout -b fix-bugs r1-master
# Edit and commit

接下来,您需要结帐 r1-master再次。在进行更改时,有人可能会在 remote1/master 上引入新的提交。 ,所以让我们确保我们是最新的:
git fetch remote1

接下来,在错误修复分支中 merge :
git merge fix-bugs

这将 pop 一个编辑器。添加有关 merge 修复内容的合理日志消息,然后保存并退出。

此时, r1-master有您的修复程序,但它不在远程服务器上。我们需要将我们新引入的修复推送到远程服务器:
git push

此时, r1-masterremote1/master应该指向相同的内容,并且远程服务器已使用您的修复程序进行更新。

其他帮助

就其值(value)而言,您似乎是 Git 的新手,所以让我为您介绍几个教程。第一个是 Try Git .我喜欢它,因为您可以在网页上尝试这些命令,但它不是很深入。 Git Immersion更深入,并出色地介绍了 Git 背后的概念。 NDP软件 Git Cheatsheet也是关于命令如何影响本地和远程存储库的极好引用。最后, Pro Git是一本让你入门的好书。在线版本是免费的。

关于git pull 远程主在分离的头部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com