撤消 Git 中的本地更改

Enr*_*ico 2 git

我的情况:我克隆了一个存储库(内核的源文件)。然后检查一个分支,并构建内核。二进制文件已存储在工作树的子目录中。现在,我想放弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。

特别是,我认为这个答案很有用。在我看来,最好的方法是

git checkout -f <desired branch of the original cloned repository>
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,这应该强制结帐,丢弃本地更改(如果我错了,请纠正我)。Git 已成功签出,但我仍然在工作树的同一子文件夹中找到之前构建的二进制文件。

Ste*_*ica 7

改编自Dan Moldingknittl的回答

将您的分支设置为与远程分支完全匹配,包括清除未跟踪的文件,可以通过三个步骤完成:

git fetch origin
git reset --hard origin/<branch name>
git clean -f -d
Run Code Online (Sandbox Code Playgroud)

说明: git fetch获取存储库的最新版本。git reset丢弃分支上对跟踪文件的任何本地更改。git clean从本地副本中删除所有未跟踪的二进制文件。

作为参考,如果您想让 Git 跟踪您构建的二进制文件,您可能应该创建一个.gitignore文件。有关详细说明,请参阅忽略文件,但对于 Java 程序,您可以使用以下内容。

# Compiled files
bin/
*.class
*.jar
Run Code Online (Sandbox Code Playgroud)


Mat*_*oto 6

由于 git 不会跟踪构建生成的二进制文件,因此它们不被视为本地更改。

git clean -xdf

应该很好地为你消灭它们。

  • 未跟踪的文件是尚未添加到 Git 存储库的文件。由于这些二进制文件尚未提交,Git 不会跟踪对它们的更改。因此,为什么可以使用 [git clean] 将它们删除(https://git-scm.com/docs/git-clean) (2认同)