git签出修改的文件而不复制粘贴完整文件路径

git签出修改的文件而不复制粘贴完整文件路径,git,git-checkout,Git,Git Checkout,git状态显示如下内容 git status # On branch icc-server-send-metric-values # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory)

git状态
显示如下内容

git status
# On branch icc-server-send-metric-values
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   java/com/me/cards/preview/preview-card.js
git状态
#在分支icc服务器上发送度量值
#未为提交而暂存的更改:
#(使用“git add…”更新将提交的内容)
#(使用“git签出--…”放弃工作目录中的更改)
#
#修改:java/com/me/cards/preview/preview-card.js

我想签出文件,但不需要重新键入或复制粘贴。最近的命令是
add-i
,但它只关心索引,而不关心签出。这里有什么好的工作流程?

使用tab completion,几乎每个shell都提供这种功能。有很多文章可以帮助您设置此功能,包括Bash

对于纯Git解决方案:

如果这是唯一的修改,请使用
git checkout.
放弃所有更改

如果要保留某些更改并放弃其他更改,请使用
git checkout-p
以交互方式放弃工作目录中的更改

当Git提示您要放弃的每个文件的更改时,请使用
a

a-丢弃此大块以及文件中所有后续大块

当Git提示您要保留的每个文件的更改时,请使用
d

d-不要丢弃这个大块头或文件中任何后面的大块头

Git有一个“插件”,非常适合这个用例

它被调用,使您能够通过数字引用更改的文件


“plugin”添加了一个
git number
命令,该命令没有任何其他参数,相当于
git status
,但带有前导数字

$ git number
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

1       a/b/c/d/e/f/g/test2

nothing added to commit but untracked files present (use "git add" to track)
然后,通过在每个命令前面加上
number
,可以通过文件编号引用文件。一个
git add
可以如下所示:

$ git number add 1
git add a/b/c/d/e/f/g/test2
git number
回显执行的命令,以便确保使用正确的数字
gitadd
只是一个例子,您可以使用任何命令并在其前面加上
number

此外,它支持范围;如果您想添加文件5-10,只需使用
git number add 5-10
git number
即可



对于任何进一步的问题,我建议只看一看。

选项卡完成不起作用,因为我的路径比我的玩具示例中的路径大得可怕,但我不知道签出-p,这是我需要的,谢谢。如果你也把其他选项的含义放进去,那就太好了
从worktree[y,n,q,a,d,/,j,j,g,e,,]中丢弃这个大块头。
@MohammadFaisal不在这个答案的范围内,并且已经提供了内联帮助。只需按
@meagar:感谢您提到
,因为在第一次查看选项时,我不太清楚在做错任何事情之前应该使用哪一个。@meagar我还觉得答案不完整,没有提到如何不放弃其他文件中的更改,所以我在您的答案末尾添加了这一点。看起来怎么样?看一看。这不完全是您所要求的,但可以应用于这种情况。
git diff files--name only
列出了所有更改过的文件,如果您想获得脚本或其他内容的名称。
$ git number add 1
git add a/b/c/d/e/f/g/test2