部分撤销

描述

撤销工作区中的更改。

用法

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 的更改。)