当我运行git reset -hard HEAD时,它应该重置为你所拉的原始版本,据我所知。不幸的是,它会让文件到处乱放,因为git状态显示了一大串未跟踪的文件。
你怎么告诉少不再来的人“只是把它拉回到最后拉的地方,不多也不少”?
当我运行git reset -hard HEAD时,它应该重置为你所拉的原始版本,据我所知。不幸的是,它会让文件到处乱放,因为git状态显示了一大串未跟踪的文件。
你怎么告诉少不再来的人“只是把它拉回到最后拉的地方,不多也不少”?
你必须使用git clean -f -d来清除工作副本中未被跟踪的文件和目录。 你可以添加-x来删除被忽略的文件,更多信息在这个优秀的SO回答中。
如果你需要将整个存储库的子模块重置到master上的状态,运行这个脚本:
git fetch origin master
git checkout --force -B master origin/master
git reset --hard
git clean -fdx
git submodule update --init --recursive --force
git submodule foreach git fetch
git submodule foreach git checkout --force -B master origin/master
git submodule foreach git reset --hard
git submodule foreach git clean -fdx
git reset --hard && git clean -df
或者,ZSH提供了一个'gpristine'别名:
alias gpristine='git reset --hard && git clean -df'
这真的很方便。
可选:
对于git clean命令,还有一个-x选项。这也将删除'git忽略'文件,所以添加这个选项以及如果它是你想要的。
如果在fork回购上工作,请确保从正确的回购/分支中获取和重置,例如:
git fetch upstream && git reset --hard upstream/master && git clean -df
用户交互方式:
git clean -i -fd
Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y
-i表示交互 力的-f -d for目录 -x用于忽略文件(如果需要添加) 注意:添加-n或——dry-run来检查它将做什么。
你可以使用git stash。您必须指定-include-untracked,否则您将会遇到最初的问题。
git stash --include-untracked
那就把最后一笔存起来
git stash drop
你可以为它创建一个方便的别名,比如git discard:
git config --global alias.discard "! git stash -q --include-untracked && git stash drop -q"
git-clean用于删除工作树中不被跟踪的文件。以下是一些可以与git clean命令一起使用的选项(简要)。
-d use当没有指定路径时。所以git递归到未跟踪的目录中删除它们。
-f/——force删除嵌套的未跟踪文件。
-i/——interactive以交互方式显示将要执行的操作和清理文件。
显示不删除任何东西会发生什么。
-x忽略文件
例如:git clean -f -d ->删除当前目录下所有未跟踪的文件。
你可以添加这个有用的别名来硬重置所有文件(跟踪和未跟踪),并返回到之前的提交版本:
git config --global alias.reset-hard '!f() { git reset --hard; git clean -df ; }; f'
然后你可以这样重置:
git reset-hard