我git checkout --<dir_name(or)file_name>
用来丢弃特定目录或文件中的所有更改.每当我这样做时,GIT都会从存储库中检出目录(或)文件.
有没有办法告诉GIT?" 不要覆盖变化,只要告诉我会发生什么. "
与git clean -n
(或)类似git clean --dry-run
.
更新:
在执行之前git checkout --src/
,我想看看哪些文件会被覆盖.我知道我们可以使用git status src/
.但是,拥有它不是很好git checkout -n --src/
吗?对用户的命令更改不多.
Git checkout
命令没有dry-run
(或类似)选项.但是,您可以使用Git ls-files
命令查看哪些工作目录文件与以下内容不同HEAD
:
git ls-files -dm -- src/
Run Code Online (Sandbox Code Playgroud)
这将列出已删除或修改的所有文件,通常由a覆盖的文件checkout
.
另一种选择是使用Git diff
命令:
git diff --name-only HEAD -- src/
Run Code Online (Sandbox Code Playgroud)
这将列出与HEAD不同的所有文件,并将替换为a checkout
.
如果这是经常做的事情,您可能想要创建一个alias
:
git config --global alias.lco "diff --name-only HEAD"
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
git lco -- src/
Run Code Online (Sandbox Code Playgroud)
你可以跑
$ git checkout --patch -- <files>
Run Code Online (Sandbox Code Playgroud)
并询问每个差异是否要“签出”该差异。如果您对每个提示都说“否”,那么它会保持不变。