这是一个基本的问题,但我正为此苦恼,我无法从共享的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.
我该怎么办?
3条答案
按热度按时间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 fetch
或git fetch origin
:这会从使用其他Git仓库的其他Git软件获取 * 他们 * 拥有的, 你还没有 * 的所有提交。git fetch
完成后,你现在拥有他们所有的提交,* 加上 * 你自己的提交。1.使用
git fetch
的输出,或者忽略git fetch
的输出,使用git log
来 * 检查 * 新提交:他们有你没有但现在有的提交。例如,在这个特定的例子中,您可以运行:
1.运行您选择的第二个命令:
git merge
或git rebase
。根据您配置git pull
的方式,您可以选择git pull
在运行git fetch
之后运行的第二个命令。但在开始执行此操作之前,只需在此处 * 手动 * 运行您喜欢的命令。您需要了解
git merge
和git rebase
的功能,包括当它们 * 中途失败 * 时该怎么办。无论您自己运行、手动运行还是让git pull
运行它们,都会发生这种情况。git merge
和git rebase
的恢复过程不同,所以你需要知道 * 哪个 *git pull
实际上运行了。如果你现在自己运行它,你会知道的。有件事特别奇怪,你必须记住。
当你使用
git fetch
时,你的Git会调用位于origin
的其他Git软件并获取它们的提交,然后更新你的 * 远程跟踪名称 *。它们看起来像origin/master
或origin/main
,origin/dev
,等等。也就是说,它们前面都有origin/
。这是 * 你的Git的内存**他们的Git分支 *(这里的“你的Git”是指 * 你的软件在你的仓库中运行 *,而“他们的Git”是指 * 他们的软件在他们的仓库中运行 *)。要将 * 他们最新的
dev
* 合并 * 到 * 您的 *Pabasara
中,您显然需要:这是这里使用的正确命令。运行
git merge dev
是错误的,因为它意味着合并 * 您的 *dev
;这是 * 您的 *dev
,您需要 * 他们的 *dev
,正如您早期的git fetch
刚刚更新的那样。但是当你使用
git pull
时,你需要提供 their 分支的名称:git pull origin dev
。所以现在的origin/dev
是origin dev
,带一个空格。原因是我在回答相关问题时描述的那些混乱的历史项目之一。这种奇怪之处在于,有时你会使用origin/dev
,而且 * 只有一种特殊情况 *(即git pull
)您使用origin dev
代替,这是您只需要记住的东西-或者您可以避免git pull
,现在您不必记住它!2lpgd9682#
要在本地将
dev
拉入Pabasara
,应用途:git checkout Pabasara
以确保您在那里,然后**git merge dev
**2j4z5cfb3#
分支“Pabasara”在服务器上被删除。这是在我的情况下的错误原因。
要将分支与服务器运行同步:
这个命令删除本地分支“Pabasara”在我的情况下。