用于删除本地 Git 更改的各种方法
本文讨论了我们可以用来丢弃 Git 中的本地更改的各种方法。 假设我们已经克隆了一个存储库,我们将看到如何取消以下本地更改。
- 阶段性变化
- 未暂存的更改
- 未跟踪的更改
- 提交的改变
- 提交和推送更改
用于删除本地 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 更改。 使用公共存储库时要小心。