ver tag modificados crear comando archivos git git-add

tag - Cómo evitar especificar la ruta absoluta del archivo mientras git-add



git tag (6)

El uso git add comando git add vuelve tedioso una vez que la ruta del archivo se vuelve larga. Por ejemplo, git add src_test/com/abc/product/server/datasource/manager/aats/DSManger.java
¿Es posible omitir especificar la ruta absoluta del archivo? ¿Puede estar usando algún tipo de patrón o algo así?

Sé que podemos usar git gui . Pero quiero hacerlo usando la línea de cmd.

Gracias de antemano por las entradas.


Aquí hay otra forma de agregar archivos. Compatible al menos en git 1.7.1.

$ git add -i staged unstaged path 1: unchanged +61/-61 a/very/long/path/that/we/really/dont/want/to/type.txt 2: unchanged +1/-1 another/very/long/path/that/we/really/dont/want/to/type.txt *** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help What now> 2

Presione 2 para seleccionar la actualización o escriba u .

staged unstaged path 1: unchanged +61/-61 a/very/long/path/that/we/really/dont/want/to/type.txt 2: unchanged +1/-1 another/very/long/path/that/we/really/dont/want/to/type.txt Update>> 2

Presione el número correspondiente al archivo que desea representar. Separe los números múltiples con una coma, por ejemplo 1,2 .

staged unstaged path 1: unchanged +61/-61 a/very/long/path/that/we/really/dont/want/to/type.txt * 2: unchanged +1/-1 another/very/long/path/that/we/really/dont/want/to/type.txt Update>>

Simplemente presione [enter] aquí.

updated one path *** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help What now> q Bye.

Finalmente escriba 7 o q para salir.


Con bash, puede establecer "globstar" ( shopt -s globstar ) y luego hacer:

git add **/DSManger.java

para agregar todos los archivos llamados DSManager.java presentes debajo del directorio actual.

( **/ coincide con todos los directorios y subdirectorios).


Creo que puede decir "git add DSManger.java" si su ventana de terminal está actualmente en el CD en la carpeta correcta (src_test / com / abc / product / server / datasource / manager / aats). Así que hazlo:

cd src_test/com/abc/product/server/datasource/manager/aats git add DSManger.java

De lo contrario, no puedo pensar de otra manera a menos que haga un informe separado.


No estoy seguro si entiendo tu pregunta.

Para agregar todos los archivos (aún no agregados), use:

git add .

Si necesita agregar todo menos un archivo, agregue todo y luego elimine los archivos usando:

git reset HEAD <file>

También puede agregar todos los archivos en un subdirectorio con

git add subdir/

Una cosa que sé que puede ser molesta es que cuando renombre los archivos, debe agregar el nuevo nombre de archivo y ponerle el nombre anterior. Al cambiar el nombre de un directorio, esto puede ser molesto. Este (unix solamente) git alias resuelve este problema (póngalo en su archivo ~ / .gitconfig:

[alias] ;add after this heading or create this heading if it does not exist addremove = !git add . && git ls-files --deleted | xargs --no-run-if-empty git rm

Esto agrega todos los archivos nuevos y elimina todos los archivos eliminados y lo clasifica en el índice.


Para sistemas tipo Unix siempre puede usar la estrella para apuntar a archivos, por ejemplo

git add *DSManager.java

incluirá todos los archivos DSManager.java que git puede encontrar en su árbol fuente comenzando en su directorio de trabajo actual.


Por favor, eche un vistazo a este script de muestra bash que he creado para este propósito. Enlace a Github Repo

#!/bin/bash # Script Name: git-bash.sh # # Author: Krishnadas P.C<[email protected]> # Date : 05-05-2018 # # Description: A simple script to manipulate git files. # TODO add more options and add Error Handlers. #declare color variables red=`tput setaf 1` green=`tput setaf 2` reset=`tput sgr0` #print the current git branch echo "On Branch - $(git branch)" #Get only staged files gitstaged=($(git diff --name-only --cached)) #Get changes not staged for commit gitnotstaged=($(git diff --name-only)) #Get only untracked files gituntracked=($(git ls-files --others --exclude-standard)) if [ $# -ge 3 ]; then if [ $2 == "st" ]; then git $1 ${gitstaged[$3]} elif [ $2 == "nt" ]; then git $1 ${gitnotstaged[$3]} elif [ $2 == "ut" ]; then git $1 ${gituntracked[$3]} else echo "Invalid input provied." fi fi #Get the new status after the command has been executed. gitstaged=($(git diff --name-only --cached)) #Get changes not staged for commit gitnotstaged=($(git diff --name-only)) #Get only untracked files gituntracked=($(git ls-files --others --exclude-standard)) #print the staged files. for i in ${!gitstaged[@]}; do if [ $i -eq 0 ]; then echo "Changes to be committed:" fi echo "${green}st$i - ${gitstaged[$i]}${reset}" done #print the changes not staged files. for i in ${!gitnotstaged[@]}; do if [ $i -eq 0 ]; then echo "Changes not staged for commit:" fi echo "${red}nt$i - ${gitnotstaged[$i]}${reset}" done #print the untracked files. for i in ${!gituntracked[@]}; do if [ $i -eq 0 ]; then echo "Untracked files:" fi echo "${red}ut$i - ${gituntracked[$i]}${reset}" done : ''Example how to: #$ ./git-bash.sh Untracked files ut0 - git-bash.sh ut1 - git-status.txt ut2 - test $./git-bash.sh add ut 0 Staged files st0 - git-bash.sh st1 - git-status.txt Untracked files ut0 - test ut stands for untracked files. nt stands for notstaged tracked files. st stands for staged files. ''

Muestra de salida

$ ./git-bash.sh On Branch - * master Untracked files: ut0 - git-bash.sh ut1 - git-status.txt ut2 - test $ ./git-bash.sh add ut 2 On Branch - * master Changes to be committed: st0 - test Untracked files: ut0 - git-bash.sh ut1 - git-status.txt