Agregue elementos al índice git de manera eficiente

Me resulta muy tedioso escribir routes completas al agregar files modificados para indexar. Por ejemplo, he cambiado 3 files, pero quiero comprometer solo 2 de ellos:

# Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: apps/frontend/config/modules/file1 # modified: apps/frontend/config/modules/file2 # modified: apps/frontend/config/modules/file3 

Así que tengo que escribir tanto como:

 git add app/frontend/modules/file1 app/frontend/modules/file3 

Estoy buscando una manera de agregar elementos por su índice en la list de estado de git? Algo como

 git add %1 %3 

Use interactive complemento interactive :

 git add -i 

Te preguntará por cada file, si deseas agregarlo a la confirmación.

Incluso puede continuar y elegir en function de parches, lo que siempre es útil:

 git add -p 
 cd apps/frontend/config/modules git add file1 file3 cd - #go back 

También puede usar la expansión de shell:

git add app/frontend/modules/file{1,3}

He estado usando un script similar que escribí para agregar solo 1 file, por ejemplo, git nadd N para agregar el N'th file modificado. No debería ser difícil modificarlo para permitir varios files.

 #!/bin/bash if [[ $# != 1 ]] ; then echo "usage: git nadd <index>" exit 0 fi num=$1 # get unstaged modified files modified_files=$(git status --porcelain | grep " M " | cut -c 4-) if [[ $modified_files == "" ]] ; then echo "error: there are no modified files" exit 1 fi # count how many we have num_modified_files=$(echo "$modified_files" | wc -l) if [[ $num -gt $num_modified_files ]] ; then echo "error: index larger than number of modified files" exit 2 fi # pick n'th modified file file=$(echo "$modified_files" | sed -n "$num p") # fix $file to full path in case we're not in root root=$(git rev-parse --show-cdup) file=$root$file git add -- "$file"