在从github中获取新版本时,如何丢弃Git存储库中的本地更改?

在从github中获取新版本时,如何丢弃Git存储库中的本地更改?,git,workflow,github,Git,Workflow,Github,在过去的几天里我开始学习git,我有一个基本的问题 想象一下这种情况: 创建一个空文件夹,并在其中创建一个foo.txt文件 为了将数据推送到远程存储库(例如github),您可以执行以下命令: git init->以初始化文件夹中的存储库 git add.->以便将文件夹中的所有文件(本例中为foo.txt)添加到索引中 git commit-m“First commit”->我们进行第一次提交 git远程添加源git@github.com:username/gitrepository.gi

在过去的几天里我开始学习git,我有一个基本的问题

想象一下这种情况:

创建一个空文件夹,并在其中创建一个foo.txt文件

为了将数据推送到远程存储库(例如github),您可以执行以下命令:

  • git init
    ->以初始化文件夹中的存储库
  • git add.
    ->以便将文件夹中的所有文件(本例中为foo.txt)添加到索引中
  • git commit-m“First commit”
    ->我们进行第一次提交
  • git远程添加源git@github.com:username/gitrepository.git
    ->我们添加了github存储库
  • git push origin master
    ->我们将更改推送到远程存储库

  • 现在在github存储库中只有一个foo.txt文件

  • 因此,现在您在另一台计算机中,并且希望使用存储库,因此您创建了一个空文件夹,并从远程存储库中提取数据
    然后创建一个名为bar.txt的文件,删除foo.txt,将文件(bar.txt)添加到索引中,进行提交并将更改推送到远程存储库

  • 现在存储库中只有bar.txt文件

  • 但是现在在第一台机器中,我们仍然有foo.txt文件,如果我们从远程存储库中提取,我们有foo.txt和bar.txt

但这不是我想做的,我想从存储库中提取所有文件,只处理这些文件。因此,在本例中,如果存储库中现在只有bar.txt,那么当我进行拉取时,我不希望项目文件夹中有任何其他文件


您如何管理它?

git的工作方式是,您将始终在存储库中保存这些文件(即存储库的
.git
文件夹中)。不同之处在于步骤4。一旦拉取更改,您仍然保留原始工作副本(只有在未进行任何更改的情况下,git才会自动合并)。我猜你离你想要的只有一步之遥:)


我觉得这很有帮助。

我想你错过了第二步

您必须从索引中删除foo.txt文件。它需要一个特定的命令(“git add.”只将文件放入索引,但不删除文件):

  • git rm foo.txt
  • git add-u(从索引中删除工作区中不再存在的所有文件)
那就承诺吧


在第三步,在第一台计算机上拉一下之后,foo文件应该消失了。

我想我解释得不好。假设您在存储库中只有一个bar.txt文件,而在家中您的工作目录中有一个foo.txt文件。如果从github进行拉取,您的工作目录中将同时包含bar.txt和foo.txt。但我不想这样做,我希望每次拉取时都能清理github存储库,这意味着如果我在github中只有bar.txt,那么当我拉取时,我只希望在我的工作文件夹中有bar.txt,而不需要更多的文件。拉取是“获取+合并”。如果我理解,您不希望与本地更改合并。这里有一种方法可以做到这一点,但我必须警告您:您的本地更改,即使已提交,也将丢失。第一个:“git fetch origin”(而不是pull)。然后:“git重置——硬源/主”。