撤消Git中特定文件夹中所做的更改

ami*_*ree 11 git

如何撤消特定文件夹中的更改?

我修改了多个文件夹中的文件

app/code/core/
app/code/local/
app/design/frontend/
Run Code Online (Sandbox Code Playgroud)

我想撤消在文件中所做的所有更改app/code/core/,同时保持在app/code/local/和中存在的文件中修改的更改app/design/frontend/.

Dav*_*sch 31

如果要撤消更改,请执行此操作 git checkout app/code/core/

  • 为什么这个有这么多点赞?这对于充满移动文件/目录的文件夹没有任何作用 (12认同)
  • 我去了文件夹(我要为其恢复所有更改)并键入git checkout ./ (2认同)

ten*_*dor 7

从 git 2.22+ 开始:

要撤消对目录的未提交更改:

git checkout --no-overlay -- <directory>
Run Code Online (Sandbox Code Playgroud)

要将目录重置为特定提交时的状态:

git checkout --no-overlay <commit> -- <directory>
Run Code Online (Sandbox Code Playgroud)

如何通过创建补丁将文件夹恢复到特定提交


在 git 2.22 之前:

警告:这些方法还会从目录中删除 git-ignored 文件。

要撤消对目录的未提交更改:

rm -rf <directory>
git checkout -- <directory>
Run Code Online (Sandbox Code Playgroud)

要将目录重置为特定提交时的状态:

rm -rf <directory>
git checkout <commit> -- <directory>
Run Code Online (Sandbox Code Playgroud)

注意:git checkout <directory>这本身就是一个糟糕的答案。在简单的情况下,它会做正确的事情,而在高级情况下,它会做错误的事情,但看起来可以工作。这是因为 git 考虑的是文件,而不是目录,并且在签出的情况下,git 只会更新正在签出的代码中存在的文件。因此,您需要使用 --no-overlay 标志(2.22+)或需要首先删除该目录中的所有文件。