Git - 用远程分支替换本地分支

6

我知道这个问题已经被问过了,但是我似乎无法完全用远程分支替换我的本地分支。我在本地分支中安装了一个第三方插件,并且在删除安装时遇到了问题;因此,我想要使用远程版本的分支“重新开始”。本地分支名为“dev”,远端分支名为“origin/dev”。我尝试了三种用远程版本替换本地分支的方法:

1. git reset HEAD --hard

2. git reset --hard origin/dev

3. git checkout dev
   git fetch
   git reset --hard origin/dev

执行上述git命令后,通过查看本地代码,我仍然可以看到插件中剩余的文件和文件夹。使用git status,显示“您的分支已经是'origin/dev'最新版本,无需提交,工作目录干净”。使用git status --ignored,列出了太多的文件……基本上是我.gitignore文件中的所��内容。我只想要存在于远程dev分支中的代码,不需要其他任何东西。有人能帮忙吗?更新:事实证明,我得到的错误是由于目录root/var/cache/*中大量的文件所致。我的.gitignore文件中包含以下条目:
/var/*
!/var/package
var/session/*

尝试了恢复本地dev分支的多种方法(如上述问题中列出的以及下面提出的解决方案),`root/var/cache`目录仍然存在。在我的应用程序重新开始运行之前,我必须手动删除它。查看github,远程dev分支没有包含 `root/var/cache`。有人能告诉我为什么 `root/var/cache` 不响应git命令以替换本地分支与远程版本吗?

1
刚刚删除了所有内容,重新克隆吗? - Mark
插件中的文件不受 Git 跟踪,因此 Git 完全不会对它们进行操作。只需手动删除它们即可。 - Hong
我不想删除并重新克隆,因为我在存储库中有其他分支需要保留。我是Git的新手,但很难相信没有简单的方法来做到这一点。教训是:不要安装供应商插件,这些插件包含750个文件,需要您在代码中“拖放”文件。 - Vee
您可以删除git仓库中的所有内容,除了.git文件夹。然后,您可以从.git文件夹中恢复所有内容。使用单个或多个 rm -rf ... 命令似乎不需要太多的工作量。 - Hong
你需要将 git statusgit status --ignored 的输出添加到问题中,并指出你想要删除哪些显示的文件。 - AD7six
显示剩余2条评论
2个回答

6

从另一个分支(例如主分支)重置你的开发分支:

git branch -f dev origin/dev

然后,检出dev分支并清理多余的文件:

git checkout dev
git clean -d -f

谢谢,@acanby,但是引起问题的目录并没有被删除;我不得不手动删除那个目录。你有什么想法为什么git命令无法删除那个目录吗?请参见更新的问题详情。 - Vee

4
尝试使用 "git clean -fx" 命令。这将删除所有未跟踪的文件,即使它们在 ".gitignore" 文件中提到也会被删除。

1
在进行翻译之前,请记得备份所有必要的文件。有时,IDE 会在 .hidden_directories 中保存有关项目配置的信息。例如,在 PyCharm/Webstorm 等情况下是 .idea - noisy
谢谢,Wouter - 我尝试了你的解决方案,但有一个目录(引起了问题)没有被删除; 已更新问题。 有什么想法我做错了什么吗? - Vee
Git不跟踪目录,只跟踪文件。如果文件名具有不存在的路径组件,则git将创建缺失的部分,但否则将忽略它们。您可以添加-d开关以清除空目录。 - Wouter Verhelst

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