按索引选择文件 - 交互式暂存的快捷方式

按索引选择文件 - 交互式暂存的快捷方式

我知道 Git 的交互式登台功能,但如果只需要将一两个文件添加到暂存区,则会有点笨重。

是否有命令可以通过索引将文件添加到暂存区?

例子:

让我们以此为例回答(针对类似的问题)。

$ git status -s
M a/very/long/path/that/we/really/dont/want/to/type.txt
M another/very/long/path/that/we/really/dont/want/to/type.txt

然后是未知的命令:

$ git add #2

这将导致:

$ git status -s
M a/very/long/path/that/we/really/dont/want/to/type.txt
A another/very/long/path/that/we/really/dont/want/to/type.txt

答案1

由于我没有找到“官方”解决方案,因此我创建了自己的脚本

它很粗糙,几乎没有经过测试:

#!/usr/bin/bash

git_status=`git status --porcelain`

if [[ $# -ne 1 ]]
then
  # Get modified files and their index
  # nl: numbers the lines
  echo "$git_status" | nl 
  exit 0
fi

if ! [[ "$1" =~ ^[0-9]+$ ]]
then
  echo "Sorry integers only"
  exit 1
fi

line=`echo "$git_status" | sed "${1}q;d"` 
# remove first 4 chars. E.g. M and some spaces
file=`echo "$line" | cut -c3-`
git add $file
git status -s

用法:

gai我为该脚本创建了一个别名:

$ gai
     1   M README.md
     2   M package.json

$ gai 2
 M README.md
M  package.json

相关内容