用主分支中的文件覆盖本地文件



我启动了一个项目并将其推送到github存储库中。接下来,我想添加另一个功能,并创建了一个新分支 (feature_branch)。我开始添加一些代码,但在遇到一堆问题之后,我现在只想用我在 master 分支中的代码覆盖我的本地文件。

我试过了:

git checkout 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 有点陌生,到目前为止,我只真正习惯于提交"已完成"的项目或在添加新内容后,我从未真正尝试过回到旧版本。 任何帮助将不胜感激!:)

命令:

git fetch --all

表示从所有远程获取,而不是"获取所有分支"。 Fetch 已经获取所有分支,但只从一个远程获取(除非另有说明)。

您看到的错误消息意味着您的某个遥控器是假。 您有一个名为feature_branch的遥控器,以及名为origin的常用遥控器。fetch --all尝试从origin中获取,这大概成功了,也从名为feature_branch的远程 中获取。 附加到名为feature_branch的远程的 URL 可能是错误的,提取失败,您看到错误。

请注意,远程只是您选择的短字符串,用于存储 URL 并提供远程跟踪名称的前端部分。 因此,短字符串origin存储另一个 Git 的 URL,并提供origin/masterorigin/部分,依此类推。 您可以使用git remote addgit remote remove随意创建和删除遥控器。 您可以使用git remote rename重命名现有遥控器。

清理假遥控器并恢复摆弄树枝的正常过程。

为什么你的分支不见了?

要么你以某种方式删除了你的功能分支,要么你可能没有注意到你的分支创建由于某种原因失败了*,但无论如何,由于你的代码仍然有你最近的修改,并且唯一的本地分支是 master,似乎你最近工作的提交是在你不知道的 master 上完成的。

* 现在多亏了 Torek,我们知道发生了什么,但解决方案保持不变

如何解决?

我会说去git stash.

如果你这样做了,任何尚未提交的东西都将放在一个名为stash的特殊分支上的临时提交中,准备好弹出git stash applygit stash pop(或者永远不会再被调用,就此而言,就像你似乎想要的那样这里)。

与执行git reset --hard相比,它的优势在于,您可能希望在几天(或几周?)内记住失败分支中的情况,您尝试了什么,如果是这样,将这些内容保存在某个地方将是宝贵的。

如果您不需要旧分支,请使用git branch -D branchName删除该分支。

然后,结帐以掌握git checkout master

然后从主git pull origin master获取最新拉取。

然后再次创建分支git checkout -b branchName

这样,您将在新分支中拥有主分支数据,

我希望这有所帮助!

最新更新