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"