部分撤销
描述
撤销工作区中的更改。
用法
cm partial undo [<path>[ ...]] [--symlink] [-r | --recursive] [<filter>[ ...]] [--silent | --machinereadable [--startlineseparator=<sep>] [--endlineseparator=<sep>] [--fieldseparator=<sep>]]
选项
选项 / 参数 | 描述 |
---|---|
--symlink | 将撤销操作应用于符号链接,而不是目标。 |
-r | --recursive | 递归执行撤销。 |
--silent | 不显示任何输出。 |
--machinereadable | 以易于解析的格式输出结果。 |
--startlineseparator | 与 '--machinereadable' 标志一起使用,指定行应如何开始。 |
--endlineseparator | 与 '--machinereadable' 标志一起使用,指定行应如何结束。 |
--fieldseparator | 与 '--machinereadable' 标志一起使用,指定字段应如何分隔。 |
--checkedout | 选择签出的文件和目录。 |
--unchanged | 选择内容未更改的文件。 |
--changed | 选择本地更改或签出的文件和目录。 |
--deleted | 选择已删除的文件和目录。 |
--moved | 选择已移动的文件和目录。 |
--added | 选择已添加的文件和目录。 |
path | 要应用操作的文件或目录的路径。使用双引号 (" ") 指定包含空格的路径。使用空格分隔路径。如果未指定路径,默认情况下撤销操作将采用当前目录中的所有文件。 |
filter | 将指定的过滤器或过滤器应用于给定的路径。使用空格分隔过滤器。有关更多信息,请参阅过滤器部分。 |
帮助
备注
undo 命令很危险 - 它以不可逆的方式撤销工作。undo 完成后,无法恢复受其影响的文件和目录的先前状态。如果参数中未指定任何路径,默认情况下它会撤销当前目录中的所有更改,但不递归。
从 /src 目录执行时,这些是等效的
- src
- file.txt
- code.cs
- /test
- test_a.py
- test_b.py
cm partial undo
cm partial undo *
cm partial undo file.txt code.cs /test
cm partial undo .
cm partial undo /src file.txt code.cs
如果要将操作设置为递归,则必须指定 '-r' 标志。
要撤销目录下所有更改(包括影响目录本身的更改)
cm partial undo dirpath -r
如果 dirpath 是工作区路径,则工作区中的所有更改都将被撤销。
过滤器
如果未指定任何标志,默认情况下,所有更改都会被撤销,但可以使用以下一个或多个标志来过滤路径。如果文件或目录与一种或多种指定的更改类型匹配,则该文件或目录上的所有更改都将被撤销。例如,如果您同时指定 '--checkedout' 和 '--moved',如果一个文件既签出又移动,则这两个更改都将被撤销。
示例
cm partial undo . -r
(撤销当前目录中的所有更改,递归执行。如果从工作区的根目录执行,则撤销整个工作区中的所有更改。)
cm partial co file.txt
cm partial undo file.txt
(撤销 file.txt 上的签出。)
echo content >> file.txt
cm partial undo file.txt
(撤销对 file.txt 的本地更改。)
cm partial undo src
(撤销对 src 目录及其文件的更改。)
cm partial undo src/*
(撤销 src 中包含的每个文件和目录中的更改,而不影响 src。)
cm partial undo *.cs
(撤销对当前目录中与 *.cs 匹配的每个文件或目录的更改。)
cm partial undo *.cs -r
(撤销对当前目录中与 *.cs 匹配的每个文件或目录以及其下面的每个目录的更改。)
cm partial co file1.txt file2.txt
echo content >> file1.txt
cm partial undo --unchanged
(撤销未更改的 file2.txt 的签出,忽略本地更改的 file1.txt。)
echo content >> file1.txt echo content >> file2.txt
cm partial co file1.txt
cm partial undo --checkedout
(撤销签出的文件 file1.txt 中的更改,忽略 file2.txt,因为它未签出。)
cm partial add file.txt
cm partial undo file.txt
(撤销 file.txt 的添加,使其再次成为私有文件。)
rm file1.txt echo content >> file2.txt
cm partial add file3.txt
cm partial undo --deleted --added *
(撤销 file1.txt 的删除和 file3.txt 的添加,忽略 file2.txt 的更改。)