git 您的配置指定与远程的引用“refs/heads/分支”合并,但未提取此类引用

mnemlml8  于 2023-03-11  发布在  Git
关注(0)|答案(3)|浏览(903)

这是一个基本的问题,但我正为此苦恼,我无法从共享的github repo中提取任何东西到我的分支Pabasara。

D:\Academic\L2S2\IN 2900 - Industry Based Project\rs-client>git status
On branch Pabasara
nothing to commit, working tree clean
 

D:\Academic\L2S2\IN 2900 - Industry Based Project\rs-client>git branch
* Pabasara
  dev

D:\Academic\L2S2\IN 2900 - Industry Based Project\rs-client>git pull
Your configuration specifies to merge with the ref 'refs/heads/Pabasara'
from the remote, but no such ref was fetched.

我该怎么办?

0vvn1miw

0vvn1miw1#

很明显你是Git新手,因此我建议你 * 避免 * git pull命令,原因很简单:git pull是一个 * 方便 * 的命令,它可以运行 * 两个独立的Git命令 *。但是您还不知道如何操作这两个独立的Git命令。在您知道如何使用这两个手动工具之前,不要使用电动工具,以及在操作过程中锋利的刀片可能会在哪里伸出。(不是每个人都同意这种哲学,但我认为你应该知道每个手动工具是如何工作的,在一个相当好的水平,在你开始使用自动和电动的。)

拉取=提取+合并:你应该运行fetch,然后merge

一般来说,运行git pull就像是先运行git fetch,然后再运行git merge。但是这个规则有很多例外,事情可能会变得非常复杂。关于这个问题的更多信息,请参见我对Git fetch and git pull relationship的回答。为了 * 避免所有的复杂性 ,特别是当你是Git新手时,简单地说:
1.运行git fetchgit fetch origin:这会从使用其他Git仓库的其他Git软件获取 * 他们 * 拥有的,
你还没有 * 的所有提交。git fetch完成后,你现在拥有他们所有的提交,* 加上 * 你自己的提交。
1.使用git fetch的输出,或者忽略git fetch的输出,使用git log来 * 检查 * 新提交:他们有你没有但现在有的提交。
例如,在这个特定的例子中,您可以运行:

git log Pabasara..origin/dev

1.运行您选择的第二个命令:git mergegit rebase。根据您配置git pull的方式,您可以选择git pull在运行git fetch之后运行的第二个命令。但在开始执行此操作之前,只需在此处 * 手动 * 运行您喜欢的命令。
您需要了解git mergegit rebase的功能,包括当它们 * 中途失败 * 时该怎么办。无论您自己运行、手动运行还是让git pull运行它们,都会发生这种情况。git mergegit rebase的恢复过程不同,所以你需要知道 * 哪个 * git pull实际上运行了。如果你现在自己运行它,你会知道的。
有件事特别奇怪,你必须记住。
当你使用git fetch时,你的Git会调用位于origin的其他Git软件并获取它们的提交,然后更新你的 * 远程跟踪名称 *。它们看起来像origin/masterorigin/mainorigin/dev,等等。也就是说,它们前面都有origin/。这是 * 你的Git的内存**他们的Git分支 *(这里的“你的Git”是指 * 你的软件在你的仓库中运行 *,而“他们的Git”是指 * 他们的软件在他们的仓库中运行 *)。
要将 * 他们最新的dev * 合并 * 到 * 您的 * Pabasara中,您显然需要:

git merge origin/dev

这是这里使用的正确命令。运行git merge dev是错误的,因为它意味着合并 * 您的 * dev;这是 * 您的 * dev,您需要 * 他们的 * dev,正如您早期的git fetch刚刚更新的那样。
但是当你使用git pull时,你需要提供 their 分支的名称:git pull origin dev。所以现在的origin/devorigin dev,带一个空格。原因是我在回答相关问题时描述的那些混乱的历史项目之一。这种奇怪之处在于,有时你会使用origin/dev,而且 * 只有一种特殊情况 *(即git pull)您使用origin dev代替,这是您只需要记住的东西-或者您可以避免git pull,现在您不必记住它!

2lpgd968

2lpgd9682#

要在本地将dev拉入Pabasara,应用途:git checkout Pabasara以确保您在那里,然后**git merge dev**

2j4z5cfb

2j4z5cfb3#

分支“Pabasara”在服务器上被删除。这是在我的情况下的错误原因。
要将分支与服务器运行同步:

git checkout dev
git remote prune origin

这个命令删除本地分支“Pabasara”在我的情况下。

相关问题