撤消Git中的本地更改

时间:2017-03-18 17:54:13

标签: git

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

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

free()

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

3 个答案:

答案 0 :(得分:4)

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

git clean -xdf

应该很好地消除它们。

答案 1 :(得分:1)

改编自Dan Mouldingknittl

的答案

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

git fetch origin
git reset --hard origin/<branch name>
git clean -f -d

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

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

# Compiled files
bin/
*.class
*.jar

答案 2 :(得分:0)

重置当前分支。 结帐local/master,然后创建一个包含remote/branch历史记录的新分支。

$ git add .
$ git reset --hard HEAD

$ git checkout master
$ git fetch

$ git checkout -b <branch-name> origin/<remote-branch-name>

# replace <branch-name> = new local branch, <remote-branch-name> = remote desired branch name 

现在再次破坏你的二进制文件。