如何打开自上次git提交以来已删除、修改和创建的所有文件,我先尝试使用git status
命令,但很难解析,所以我发现git status --porcelain
更容易解析,并且结合awk + vim + 一些bash魔法,做起来很容易。
所以,我用 vim
找到了解决方案:
vim $(git status --porcelain | awk '{print $2}')
我发布这个问题和答案只是为了自己回答并分享到互联网上。
$()
相比没有任何优势,而$()
则有许多优势。唯一使用它们的原因是为了与旧的Bourne Shell兼容。此外,如果您阅读该帖子的顶部评论,我持有相同的观点。 - user4453924$()
看起来更易读。 - Doriangit ls-files -o -m --exclude-standard
命令作为 Git 命令。它包括新文件,并且不需要 awk 步骤。 - ruutergit diff HEAD --name-only
不同,该命令列出了已缓存和未缓存的更改。 - ConorSheehan1vim $(git status --porcelain -s | awk '{print $2}')
。 - prehistoricpenguinvim -O $(git status -s | awk '{print $2}')
-p
标志而不是-O
来打开它们以在选项卡中显示,因为如果你有超过2个修改的文件,你的vim屏幕将会被分割成很多部分。 - betoharres您可以从这篇博客中学习,编辑~/.gitconfig
文件并添加以下内容:
[alias]
edit = !$EDITOR $(git status --short | awk '$1 ~ /^M|A|U/ {print $2}' )
git edit
将打开所有已修改的文件。--porcelain
可能更好,因为输出将不受配置的影响而保持一致,... - edi9999--porcelain
与当前工作目录无关,这可能是使用--short
的有效原因。 - Andy Egit ls-files -o -m --exclude-standard
,它包括新文件且不需要 awk 步骤。 - ruuter!$EDITOR $(git d $1 --name-only)
作为别名,这将允许您打开与其他命名分支不同的文件,如果留空则打开HEAD。 - smilingfroggit ls-files --modified --deleted --others -z | xargs -0 vim
tmp/
目录下得到了很多在我的 .gitignore
文件中的文件。 - Doriangit ls-files -o -m --exclude-standard
命令来打开修改过和新增的文件,但排除忽略的文件。对于我而言,使用 xargs
命令无法与 vim 协同工作(将所有文件名作为一个字符串管道传输到 vim 中作为新文件,并阻塞终端输入),而 vim $()
命令可以很好地解决这个问题。 - ruuter
a.rb
已被删除,vim a.rb
将打开一个空文件,保存它将创建一个空白文件,不做任何操作只是用来注意到文件已被删除。 - Dorian