gpt4 book ai didi

linux - 在后续 git 命令中使用 git 命令的输出路径的最简单方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:51 25 4
gpt4 key购买 nike

我经常使用鼠标来做这样的事情:

/home/me-$ git log --name-status -1  
commit a10e63af1f4b1b2c28055fed55d4f2bb3225a541
Author: Me <me@me.com>
Date: Tue Aug 18 13:04:04 2015 -0400

XYZ-376 make ctors public

M x/y/z/Class1.java
M x/y/z/Class2.java

/home/me-$ git checkout -- x/y/z/Class2.java # <-- copy/paste with the mouse

我知道一些 git 命令接受通配符,这在一定程度上缓解了这个问题,但我想知道是否有一种方法可以从以前的命令中专门引用路径规范等。

如何在不使用鼠标且不手动重新输入长路径的情况下运行这样的命令?

最佳答案

我通常为此使用子 shell ( $(<command in subshell here...>))。

例如,有时我删除了很多文件,我不得不 git rm每一个。

有命令 git ls-files --deleted返回所有丢失文件的名称。我可以将它与 git rm 结合起来像这样:

git rm $(git ls-files --deleted)

这是一个不好的例子,因为(正如我后来发现的),使用 git add --all 可以更容易地实现此操作.但我认为它说明了这一点。


在你的例子中,如果你想 check out 在上一次提交中更改的所有文件,将很难解析 git log --name-status 的输出。 ,因为它包含其他信息,但您可以使用类似 git diff HEAD^ --name-only 的内容相反。

所以:

git checkout $(git diff HEAD^ --name-only)

将在您的示例中执行此操作。

我注意到使用 $(...) 的一件好事语法是它在 Bash 在 PowerShell 中都有效。

关于linux - 在后续 git 命令中使用 git 命令的输出路径的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com