Git:无法将分支拉回本地(找不到远程引用)

3

我对git很新,并且非常困扰。最近我创建了一个新分支,做了一些工作,并将其推送到GitHub,创建了一个Pull Request。那里没有问题。

然而,我的本地开发环境得到更新,我失去了所有对我的分支的本地引用。我需要在本地获取我的工作,以便继续。

从网上的阅读中,我尝试了:

重新创建我的分支:

git checkout -b '我正在工作的分支名'

从远程拉取分支

git pull origin '我正在工作的分支名'

然后我尝试删除上面创建的本地分支(git branch -d)并尝试:

git fetch origin '我正在工作的分支名'

但在每个场合中,我都会收到错误:

fatal: Couldn't find remote ref 我正在工作的分支名

是否有人知道正确的方法?


当您执行 git branch -r 命令时,您想从远程恢复的分支是否出现在列表中?如果没有,恐怕它已经丢失了。如果有,只需删除本地分支,再次获取远程引用并检出您的分支,但是名称开头不要加上 *remote/*。 - Romain Valeri
@RomainVALERI 是的,它确实可以。 - MeltingDog
根据您的本地存储库发生了什么情况,您可能能够从 git reflog 中恢复提交。 - ojchase
2个回答

2

从评论中得知: 我:当你执行 git branch -r 命令时,你想要恢复的分支是否出现在列表中? 你:是的,它出现在列表中。

从这个点开始,我会: (如果需要,先暂存任何未提交的更改)

# first delete the failed new branch
git branch -D local-branch-you-just-created-when-trying-to-solve-the-problem
# get all up-to-date remote references into your local repo
git fetch
# (optionnally) list all branches to be sure
git branch -a
# to avoid typos, copy-paste the line with your branch in your next checkout
# which will recreate a local version of said remote branch
git checkout name-of-the-branch-you-try-to-recover-from-remote

注意:当列出所有分支时(假设您的分支名为“feature_A”),不要…
git checkout origin/feature_A

(检出远程跟踪分支)而不是仅仅

git checkout feature_A

针对本地实例。


恐怕这只会给我带来与上面相同的错误。 - MeltingDog
@MeltingDog 你的意思是说你也遇到了同样的致命错误吗?当检查从新的git branch -a中复制和粘贴的分支名称时?这很奇怪。我想知道问题的其他方面是否存在误解。 - Romain Valeri
是的,同样的致命错误。是的,很可能是我在其中产生了误解。Git 对我来说是一个巨大的知识鸿沟,似乎教程与现实差别如此之大,以至于无法学习。 - MeltingDog

1
我建议您执行以下操作:
1. 在所需位置打开git bash
2. 将远程仓库克隆到本地计算机:git clone <repo_url>
3. 为了列出所有远程分支:git branch -a
绿线表示您所在的分支。以remotes/开头的红色分支是可以切换到的可能的远程分支。
4. 切换到远程分支:git checkout <branch_name>

基本上就是这样 :) 现在在该分支上工作...提交您的更改,一旦想要推送更改,请运行:git push origin <branch_name>


如果我可以问一下,为什么需要克隆步骤? - Romain Valeri
我试图为给定的问题提供端到端的解释。所以在这种情况下,用户说他的电脑环境发生了变化... 所以我认为,第一步是从远程克隆repo :) 然后你可以开始处理分支 :) - shaikoron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接