我启动了一个项目,并将其推送到github仓库中。接下来,我想添加另一个功能,并创建了一个新分支(feature_branch)。我开始添加一些代码,但是遇到很多问题之后,我现在想用master分支中的代码覆盖本地文件。
我尝试过:
git checkout master
(返回master分支)
git fetch --all
希望这会覆盖所有内容(我在https://www.freecodecamp.org/forum/t/override-local-files-with-git-pull/13216上找到了此内容)
在这一点上,我得到了错误
fatal: 'feature_branch' does not appear to be a git repository
git branch -a
向我显示以下内容:
*master
remotes/origin/feature_branch
remotes/origin/master
我现在有点困惑。抱歉,我是git的新手,到目前为止,我只真正习惯于提交“完成的”项目,或者在添加新内容之后,我从未真正尝试过使用旧版本。 任何帮助将不胜感激! :)
答案 0 :(得分:0)
您的分支为什么走了?
要么您以某种方式删除了功能分支,要么您可能没有注意到分支创建由于某种原因而失败*,但是无论如何,由于您的代码仍具有最新修改并且唯一的本地分支是master,因此它看来您最近的工作是在您不知道的大师上完成的。
*现在thanks to torek,我们知道发生了什么,但解决方案保持不变
如何解决?
我会说只是去git stash
。
如果这样做,尚未提交的所有内容将被放入临时提交的特殊分支stash
中,准备用git stash apply
或git stash pop
弹出(或从不调用)同样,就好像您想要在这里一样。)
与git reset --hard
相比,它的优势在于,您可能想要在几天(或几周?)内记住失败分支中的情况,以及您尝试过的事情,如果这样的话,将这些内容保存在某处将是非常宝贵的。
答案 1 :(得分:0)
命令:
git fetch --all
表示从所有远程操作 获取,而不是“获取所有分支”。提取已获取所有分支,但仅从一个远程获取(除非另有说明)。
您看到的错误消息表示您的远程是伪造的。您有一个名为feature_branch
的遥控器,以及一个通常的名为origin
的遥控器。 fetch --all
尝试从可能成功的origin
以及从名为feature_branch
的远程服务器获取数据。附加到名为feature_branch
的远程服务器的URL可能是错误的,并且提取失败,并且您看到的错误。
请注意,遥控器只是一个短字符串(您可以选择),它存储URL,并提供远程跟踪名称的前半部分。因此,短字符串origin
存储了另一个Git的URL,并且还提供了origin/
的{{1}}部分,依此类推。您可以使用origin/master
和git remote add
随意创建和删除遥控器。您可以使用git remote remove
重命名现有的遥控器。
清理伪造的遥控器,然后继续进行摆弄树枝的正常过程。
答案 2 :(得分:0)
如果您不希望使用旧分支,请使用git branch -D branchName
删除该分支。
然后,结帐至主git checkout master
。
然后从主服务器git pull origin master
获取最新信息。
然后再次创建分支git checkout -b branchName
。
这样,您将在新分支中拥有主分支数据,
希望对您有帮助!