1

Я знаю о функциональности Git Interactive Staging, но немного неуклюже, если в область подготовки нужно добавить только один или два файла.

Есть ли команда добавить файл по индексу в область подготовки?

Пример:

Давайте возьмем пример из этого ответа (на аналогичный вопрос).

$ 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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .