5

我想同步我的本地存储库,以使本地成为主存储库的精确副本。自从检查它以来,我已经向我的本地添加了几个文件,这些文件不存在于 master 中,我不想提交。尽管如此,在这个过程中,我想删除我本地与主控的所有差异:当我完成后,本地的附加文件将被删除。

较早的一个问题提供了一种使本地成为 master 的策略: Reset local repository branch to be like remote repository HEAD

但这对我不起作用。推荐的命令, git fetch origin git reset --hard origin/master

不要从我的本地删除其他文件,即使 git status 表明本地和 master 是相同的。而且,在一种情况下,文件的主版本没有替换我的本地版本。

关于如何做到这一点的任何想法?

4

3 回答 3

11

实际上,您尝试的命令会将所有跟踪的文件重置为origin/master. 但是,git 不会(通常)接触未跟踪的文件。事实上,“未跟踪文件”功能的全部目的是,能够在存储库中拥有完全独立于 git 的文件。

但是,如果您愿意,您仍然可以让 git 删除未跟踪的文件:

要从存储库中删除所有未跟踪的文件,请键入:

git clean -f

(来源:如何从当前 Git 工作树中删除本地(未跟踪的)文件?

请注意,由于您删除的文件未被跟踪,它们将永远丢失

于 2013-09-13T09:23:04.600 回答
3

我认为您将两件事混为一谈:

  • 更新您的存储库以与远程存储库同步
  • 将您的工作目录重置为与特定提交相同。

要更新您的存储库(即 git 存储有关您的项目及其历史记录的所有信息的数据库),请使用git fetch remote_repository_name(remote_repository_name通常是origin)。运行此命令后,远程存储库中存在的所有提交和对象都origin将存在于您的存储库中。

现在,工作目录(即您在包含项目的文件夹中看到的文件)与存储库数据库本身有所不同。请注意,您不能使工作目录与远程存储库相同,因为这是两种不同的东西(包含文件的目录与 git 数据库)。您可以重置您的工作目录以反映特定的提交(例如来自 的master分支的提示origin) - 这里@oznerol256 的答案为您提供了您所需要的。

于 2013-09-13T14:39:25.463 回答
-3

由于文件尚未提交,您可以使用:

rm -rf ./*
git reset --hard HEAD

这将清除所有文件,然后将目录恢复到其原始状态。

于 2013-09-13T09:18:50.880 回答