用于删除本地 Git 更改的各种方法

本文讨论了我们可以用来丢弃 Git 中的本地更改的各种方法。 假设我们已经克隆了一个存储库,我们将看到如何取消以下本地更改。

  1. 阶段性变化
  2. 未暂存的更改
  3. 未跟踪的更改
  4. 提交的改变
  5. 提交和推送更改

用于删除本地 Git 更改的各种方法

假设我们刚刚克隆了一个 Git 存储库,进行了一些文件更改,并暂存了要提交的文件,那么我们如何丢弃这些文件呢?

我们可以使用带有 –hard 标志的 git reset 命令放弃暂存更改。 如下图所示运行命令。

$ git reset --hard

在下一个场景中,我们已经对 repo 中的一些文件进行了更改,但我们还没有准备好提交。 我们如何丢弃这些更改?

我们有两个选择; 我们可以使用 git reset --hard 命令或 git checkout <file> 命令。 如果您正在处理多个文件,请运行后者,如下所示。

$ git checkout .

这将指示 Git 将所有文件恢复为上次提交的状态,从而丢弃未暂存的更改。

再举一个我们向存储库引入新文件的场景。 这些文件将属于未跟踪文件。

我们如何删除这些文件?

git clean 命令完成这项工作。 以下是运行命令的方法。

$ git clean -f

此命令的效果不可逆转。 建议将命令作为空运行运行以查看将丢失的内容。

您可以运行命令,如下所示。

$ git clean -f -n

您可以添加 -d 标志以删除未跟踪的目录。

如果您不想丢弃更改但希望它们不在索引中,则可以将它们隐藏起来。 在 Git 中存储意味着将索引的更改安全地存储在其他地方。

当您需要它们时,运行 git stash pop 命令。

如果我们已经提交了一些更改并且需要消除它们怎么办?

此时,我们需要将 HEAD 指针移动到最近创建的提交的父节点。 我们将使用 git reset --hard 命令,如下所示。

$ git reset --hard HEAD~1

这将消除 HEAD@{0} 处的提交引入的更改。

您还可以运行 git reset --hard@{u} 以丢弃分支中的本地提交并使其与上游跟踪分支相同。

如果您已经提交了更改,则可以创建一个提交来恢复对文件所做的更改并将其推送到远程。

$ git revert <commit-hash>

这将创建一个新的提交,您可以将其推送到远程。

简而言之,我们可以使用多种方法来消除本地 Git 更改。 使用公共存储库时要小心。