如何在我的工作副本中排除非指数的变更?
当前回答
你有一个非常简单的 git 命令 git checkout.
其他回答
无论你的 repo 是什么状态,你总是可以重新设置到任何以前的承诺:
git reset --hard <commit hash>
这将消除随后发生的所有变化。
因为没有答案表明我所使用的准确选项组合,这里是:
git clean -dxn . # dry-run to inspect the list of files-to-be-removed
git clean -dxf . # REMOVE ignored/untracked files (in the current directory)
git checkout -- . # ERASE changes in tracked files (in the current directory)
以下是使用的 git 清洁选项的在线帮助文本:
D
除未追踪的目录外,除未追踪的文件外,除未追踪的目录外,除未追踪的目录外,除非由另一个 Git 存储库管理,则不会默认删除。
x
不要使用从.gitignore (每个目录) 和 $GIT_DIR/info/exclude 阅读的默认忽略规则,但仍然使用与 -e 选项提供的忽略规则. 这允许删除所有未追踪的文件,包括构建产品。
N
实际上不要删除任何东西,只是显示会做什么。
F
如果 Git 配置变量 clean.requireForce 不被设置为虚假, Git clean 将拒绝删除文件或目录,除非 -f、 -n 或 -i. Git 将拒绝删除.git 子目录或文件中的目录,除非另一个 -f 被提供。
我有一個奇怪的情況,在那裡一個檔案總是無關,這有助於我解決。
git rm.gitattributes git add -A git reset --hard
作为一个提醒,更新的版本的 git 有恢复命令,这也是一个建议,当你在更改文件时输入 git 状态时:
(使用“吉特添加......”更新什么将被承诺)
(使用“git restore...”来删除工作目录的更改)
所以 git'restore' 是这个问题的现代解决方案. 在输入 'git status' 后,从 git 阅读建议总是很好的想法 :-)
对于当前工作目录使用中的所有未输入的文件:
git restore .
对于特定文件的使用:
git restore path/to/file/to/revert
这与 git 交换器一起取代了过度加载的 git 支票(见这里),从而取消了论点的分歧。
如果一个文件既有步骤和未步骤的变化,则仅在 git diff 中显示的未步骤的变化将被转换。
之前 Git 2.23
对于当前工作目录中的所有未输入的文件:
git checkout -- .
对于一个特定的文件:
git checkout -- path/to/file/to/revert
在这里消除双重性(这被称为论点不双重性)。
推荐文章
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何完全删除TFS绑定
- 哪些Eclipse文件属于版本控制?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异