我的情况:我克隆了一个存储库(内核的源文件)。然后签出了一个分支,并构建了内核。二进制文件已存储在工作树的子目录中。现在,我想丢弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。
特别是,我认为this答案很有用。在我看来,最好的方法是
free()
如果我理解正确,这应该强制结账,放弃本地更改(如果我错了,请纠正我)。 Git成功检出,但我仍然在工作树的同一子文件夹中找到以前构建的二进制文件。
答案 0 :(得分:4)
由于构建生成的二进制文件不会被git跟踪,因此不会将它们视为本地更改。
git clean -xdf
应该很好地消除它们。
答案 1 :(得分:1)
将分支设置为与远程分支完全匹配,包括清除未跟踪的文件,可以分三步完成:
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
现在再次破坏你的二进制文件。