Git
Română ▾ Topics ▾ Latest version ▾ git-add last updated in 2.34.1

NUME

git-add - Adaugă conținutul fișierului la index

REZUMAT

git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
	  [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse]
	  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
	  [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
	  [--] [<pathspec>…​]

DESCRIERE

Această comandă actualizează indexul folosind conținutul curent găsit în arborele de lucru, pentru a pregăti conținutul pregătit pentru următoarea confirmare. De obicei, adaugă conținutul actual al căilor de acces existente ca întreg, dar, cu ajutorul unor opțiuni, poate fi utilizată și pentru a adăuga conținut cu aplicarea doar a unei părți din modificările aduse fișierelor din arborele de lucru sau pentru a elimina căile de acces care nu mai există în arborele de lucru.

"Index" conține un instantaneu al conținutului configurației de lucru, iar acest instantaneu este luat ca fiind conținutul următoarei comenzi. Prin urmare, după ce ați efectuat orice modificare în configurația de lucru și înainte de a rula comanda commit, trebuie să utilizați comanda add pentru a adăuga orice fișier nou sau modificat la index.

Această comandă poate fi executată de mai multe ori înainte de o confirmare. Aceasta adaugă doar conținutul fișierului (fișierelor) specificat(e) în momentul în care comanda add este executată; dacă doriți ca modificările ulterioare să fie incluse în următoarea confirmare, trebuie să executați din nou git add pentru a adăuga noul conținut la index.

Comanda git status poate fi utilizată pentru a obține un rezumat al fișierelor care au modificări care sunt pregătite pentru următoarea confirmare.

Comanda git add nu va adăuga în mod implicit fișiere ignorate. Dacă în linia de comandă au fost specificate în mod explicit fișiere ignorate, git add va eșua cu o listă de fișiere ignorate. Fișierele ignorate la care se ajunge prin recursivitatea directoarelor sau prin globarea numelor de fișiere efectuată de Git (citați glob-urile înainte de shell) vor fi ignorate în mod silențios. Comanda "git add" poate fi utilizată pentru a adăuga fișiere ignorate cu opțiunea -f (force).

Vă rugăm să consultați git-commit[1] pentru modalități alternative de a adăuga conținut la un commit.

OPȚIUNI

<pathspec>…​

Fișiere din care se adaugă conținut. Se pot introduce blocuri de fișiere (de exemplu, *.c) pentru a adăuga toate fișierele corespunzătoare. De asemenea, se poate introduce un nume de director (de exemplu, dir pentru a adăuga dir/file1 și dir/file2) pentru a actualiza indexul pentru a se potrivi cu starea curentă a directorului ca întreg (de exemplu, dacă se specifică dir se va înregistra nu numai un fișier dir/file1 modificat în configurația de lucru, un fișier dir/file2 adăugat în configurația de lucru, ci și un fișier dir/file3 eliminat din acesta). Rețineți că versiunile mai vechi ale Git obișnuiau să ignore fișierele eliminate; utilizați opțiunea --no-all dacă doriți să adăugați fișiere modificate sau noi, dar să le ignorați pe cele eliminate.

Pentru mai multe detalii despre sintaxa <pathspec>, consultați intrarea "pathspec" din gitglossary[7].

-n
--dry-run

Nu adăugați de fapt fișierul (fișierele), doar arătați dacă acestea există și/sau vor fi ignorate.

-v
--verbose

Poți să fii vorbăreț.

-f
--force

Permite adăugarea de fișiere altfel ignorate.

--sparse

Allow updating index entries outside of the sparse-checkout cone. Normally, git add refuses to update index entries whose paths do not fit within the sparse-checkout cone, since those files might be removed from the working tree without warning. See git-sparse-checkout[1] for more details.

-i
--interactive

Adăugați în mod interactiv la index conținutul modificat în configurația de lucru. Se pot furniza argumente opționale privind calea de acces pentru a limita operațiunea la un subset al structurii de lucru. A se vedea "Mod interactiv" pentru detalii.

-p
--patch

Alegeți în mod interactiv bucăți de patch-uri între index și arborele de lucru și adăugați-le la index. Astfel, utilizatorul are posibilitatea de a examina diferența înainte de a adăuga conținutul modificat la index.

Acest lucru rulează efectiv add --interactive, dar ocolește meniul inițial de comenzi și trece direct la subcomanda patch. Pentru detalii, consultați “Modul interactiv”.

-e
--edit

Deschideți fișierul diferență față de index într-un editor și lăsați utilizatorul să îl editeze. După ce editorul a fost închis, ajustați anteturile hunk și aplicați patch-ul la index.

Scopul acestei opțiuni este de a selecta și de a alege liniile din patch-ul care urmează să fie aplicat sau chiar de a modifica conținutul liniilor care urmează să fie etapizate. Această opțiune poate fi mai rapidă și mai flexibilă decât utilizarea selectorului interactiv de hunk-uri. Cu toate acestea, este ușor să te confunzi și să creezi un patch care nu se aplică la index. Consultați EDITING PATCHES (Editarea patch-urilor) de mai jos.

-u
--update

Actualizează indexul doar acolo unde există deja o intrare care corespunde cu <pathspec>. Acest lucru elimină și modifică intrările din index pentru a se potrivi cu arborele de lucru, dar nu adaugă fișiere noi.

Dacă nu se dă nici o <pathspec> atunci când se utilizează opțiunea -u, sunt actualizate toate fișierele urmărite din întregul configurație de lucru (vechile versiuni ale Git obișnuiau să limiteze actualizarea la directorul curent și la subdirectoarele sale).

-A
--all
--no-ignore-removal

Actualizează indexul nu numai în cazul în care în arborele de lucru există un fișier care se potrivește cu <pathspec>, ci și în cazul în care indexul are deja o intrare. Această operațiune adaugă, modifică și elimină intrări din index pentru a se potrivi cu structura de lucru.

Dacă nu se indică nicio <pathspec> atunci când se utilizează opțiunea -A, sunt actualizate toate fișierele din întregul configurator de lucru (vechile versiuni ale Git obișnuiau să limiteze actualizarea la directorul curent și la subdirectoarele sale).

--no-all
--ignore-removal

Actualizarea indexului prin adăugarea de fișiere noi necunoscute indexului și a fișierelor modificate în configurația de lucru, dar ignoră fișierele care au fost eliminate din configurația de lucru. Această opțiune nu este opțională atunci când nu se utilizează <pathspec>.

Această opțiune este în primul rând pentru a ajuta utilizatorii care sunt obișnuiți cu versiunile mai vechi de Git, în care "git add <pathspec>…​" era un sinonim pentru "git add --no-all <pathspec>…​", adică ignora fișierele eliminate.

-N
--intent-to-add

Înregistrați doar faptul că traseul va fi adăugat ulterior. O intrare pentru calea de acces este plasată în index fără conținut. Acest lucru este util, printre altele, pentru a arăta conținutul neetajat al unor astfel de fișiere cu git diff și pentru a le confirma cu git commit -a.

--refresh

Nu adăugați fișierul (sau fișierele), ci doar reîmprospătați informațiile stat() ale acestora în index.

--ignore-errors

În cazul în care unele fișiere nu au putut fi adăugate din cauza unor erori de indexare, nu întrerupeți operațiunea, ci continuați să le adăugați pe celelalte. Comanda va ieși în continuare cu un status diferit de zero. Variabila de configurare add.ignoreErrors poate fi setată la true pentru ca acesta să fie comportamentul implicit.

--ignore-missing

Această opțiune poate fi utilizată numai împreună cu --dry-run. Utilizând această opțiune, utilizatorul poate verifica dacă vreunul dintre fișierele date va fi ignorat, indiferent dacă acestea sunt deja prezente sau nu în configurația de lucru.

--no-warn-embedded-repo

În mod implicit, git add va avertiza atunci când se adaugă un depozit încorporat în index fără a folosi git submodule add pentru a crea o intrare în .gitmodules. Această opțiune va suprima avertismentul (de exemplu, dacă efectuați manual operațiuni asupra submodulelor).

--renormalize

Aplicați proaspăt procesul "clean" la toate fișierele urmărite pentru a le adăuga din nou cu forța la index. Acest lucru este util după modificarea configurației core.autocrlf sau a atributului text pentru a corecta fișierele adăugate cu terminații de linie CRLF/LF greșite. Această opțiune implică -u.

--chmod=(+|-)x

Suprascrieți bitul executabil al fișierelor adăugate. Bitul executabil este modificat doar în index, fișierele de pe disc rămân neschimbate.

--pathspec-from-file=<fișier>

Pathspec este transmis în <file> în loc de argetele din linia de comandă. Dacă <file> este exact -, se utilizează intrarea standard. Elementele Pathspec sunt separate prin LF sau CR/LF. Elementele Pathspec pot fi citate așa cum se explică pentru variabila de configurare core.quotePath (a se vedea git-config[1]). A se vedea și --pathspec-file-nul și --literal-pathspecs global.

--pathspec-file-nul

Are sens numai cu --pathspec-from-file. Elementele Pathspec sunt separate prin caracterul NUL, iar toate celelalte caractere sunt luate în considerare în mod literal (inclusiv liniile de început și ghilimelele).

--

Această opțiune poate fi utilizată pentru a separa opțiunile liniei de comandă de lista de fișiere (util atunci când numele fișierelor pot fi confundate cu opțiunile liniei de comandă).

EXEMPLE

  • Adaugă conținutul din toate fișierele *.txt din directorul Documentation și din subdirectoarele sale:

    $ git add Documentation/\*.txt

    Observați că asteriscul * este citat din shell în acest exemplu; acest lucru permite comenzii să includă fișierele din subdirectoarele din directorul Documentation/.

  • Are în vedere adăugarea conținutului din toate scripturile git-*.sh:

    $ git add git-*.sh

    Deoarece acest exemplu permite shell-ului să extindă asteriscul (adică listați fișierele în mod explicit), nu ia în considerare subdir/git-foo.sh.

MODUL INTERACTIV

Atunci când comanda intră în modul interactiv, aceasta afișează rezultatul subcomandei "status" și apoi intră în bucla de comandă interactivă.

Bucla de comenzi afișează lista de subcomandă disponibile și oferă o solicitare "What now> ". În general, atunci când promptul se termină cu un singur ">", puteți alege doar una dintre opțiunile oferite și tasta return, astfel:

    *** Comenzi ***
      1: status 2: update 3: revert 4: add untracked
      5: patch 6: diff 7: quit 8: help
    Ce se întâmplă acum> 1
patch        6: diff         7: quit         8: help
    What now> 1

De asemenea, puteți spune s sau sta sau status mai sus, atâta timp cât alegerea este unică.

Bucla comenzii principale are 6 subcomandă (plus help și quit).

status

Aceasta arată modificarea între HEAD și index (adică ceea ce va fi trimis dacă spui git commit) și între index și fișierele din configurația de lucru (adică ceea ce ai putea modifica înainte de git commit folosind git add) pentru fiecare cale. Un exemplu de ieșire arată astfel:

              traseu etapizat      neetapizat
     1: binary       nothing foo.png
     2: +403/-35 +1/-1 git-add--interactive.perl

Se arată că foo.png are diferențe față de HEAD (dar acesta este binar, astfel încât nu poate fi afișat numărul de linii) și nu există nicio diferență între copia indexată și versiunea structurii de lucru (dacă versiunea structurii de lucru ar fi fost, de asemenea, diferită, ar fi fost afișat "binar" în loc de "nimic"). Celălalt fișier, git-add--interactive.perl, are 403 linii adăugate și 35 de linii șterse dacă se confirmă ceea ce este în index, dar fișierul din configurația arborelui de lucru are alte modificări (o adăugare și o ștergere).

update

Aceasta afișează informațiile de stare și emite o solicitare "Update>>". Atunci când promptul se termină cu dublu ">>", puteți face mai multe selecții, concatenate cu spații albe sau virgule. De asemenea, puteți spune intervale. De exemplu, "2-5 7,9" pentru a alege 2,3,4,5,7,9 din listă. Dacă al doilea număr dintr-un interval este omis, sunt luate toate patch-urile rămase. De exemplu, "7-" pentru a alege 7,8,9 din listă. Puteți spune "*" pentru a alege totul.

Cele pe care le-ați ales sunt apoi evidențiate cu "*", astfel:

           staged     unstaged path
  1:       binary      nothing foo.png
* 2:     +403/-35        +1/-1 git-add--interactive.perl

Pentru a elimina selecția, prefixați intrarea cu -, astfel:

Update>> -2

După efectuarea selecției, răspundeți cu o linie goală pentru a pune în scenă conținutul fișierelor din configurația de lucru pentru căile selectate în index.

reveniți la

Aceasta are o interfață de utilizare foarte asemănătoare cu "update", iar informațiile etapizate pentru căile selectate sunt readuse la cele din versiunea HEAD. Anularea căilor de acces noi le face să nu mai fie urmărite.

adăugați untracked

Aceasta are o interfață de utilizare foarte asemănătoare cu update și revert și vă permite să adăugați la index căi de acces netrasate.

patch

Acest lucru vă permite să alegeți o cale dintr-o selecție de tip "status". După alegerea căii, vă prezintă diferența dintre fișierul index și fișierul de lucru și vă întreabă dacă doriți să etapizați modificarea fiecărei bucăți. Puteți selecta una dintre următoarele opțiuni și tasta return:

y - pune în scenă această bucată
n - nu puneți în scenă această bucată
q - renunță; nu pune în scenă această bucată sau oricare dintre cele rămase
a - pune în scenă această bucată și toate bucățile ulterioare din fișier
d - nu pune în scenă această bucată și nici una dintre bucățile ulterioare din fișier
g - selectează o bucată la care să treacă
/ - caută o bucată care se potrivește cu regex-ul dat
j - lasă această bucată nehotărâtă, vezi următoarea bucată nehotărâtă
J - lasă acest hunk nehotărât, vezi următorul hunk
k - lasă această bucată nehotărâtă, vezi bucată nehotărâtă anterioară
K - lasă această bucată nehotărâtă, vezi bucată anterioară
s - împarte bucata curentă în bucăți mai mici
e - editează manual hunk-ul curent
? - tipărește ajutorul

După ce se hotărăște ce se întâmplă cu toate părțile, în cazul în care există o parte care a fost aleasă, indexul este actualizat cu părțile selectate.

Puteți omite să tastați return aici, prin setarea variabilei de configurare interactive.singleKey la true.

diff

Acest lucru vă permite să verificați ce va fi confirmat (adică între HEAD și index).

EDITAREA PATCH-URILOR

Invocând git add -e sau selectând e din selectorul interactiv hunk va deschide un patch în editorul dumneavoastră; după ce editorul iese, rezultatul este aplicat la index. Sunteți liber să faceți modificări arbitrare la patch, dar rețineți că unele modificări pot avea rezultate confuze sau chiar pot duce la un patch care nu poate fi aplicat. Dacă doriți să abandonați complet operațiunea (adică să nu mai puneți nimic nou în index), ștergeți pur și simplu toate liniile din patch. Lista de mai jos descrie unele lucruri comune pe care le puteți vedea într-un patch și ce operații de editare au sens asupra lor.

conținut adăugat

Conținutul adăugat este reprezentat de liniile care încep cu "+". Puteți împiedica punerea în scenă a liniilor de adăugare prin ștergerea acestora.

conținut eliminat

Conținutul eliminat este reprezentat de liniile care încep cu "-". Puteți preveni eliminarea lor prin transformarea lui "-" într-un " " (spațiu).

conținut modificat

Conținutul modificat este reprezentat prin linii "-" (eliminarea conținutului vechi) urmate de linii "+" (adăugarea conținutului de înlocuire). Puteți preveni etapizarea modificării prin transformarea liniilor "-" în " " și prin eliminarea liniilor "+". Aveți grijă că modificarea doar a jumătate din pereche este posibil să introducă modificări confuze în index.

Există, de asemenea, operații mai complexe care pot fi efectuate. Atenție însă, deoarece patch-ul este aplicat numai la index și nu la configurația de lucru, arborele de lucru va părea că "anulează" modificarea din index. De exemplu, introducerea unei linii noi în index care nu se află nici în HEAD, nici în configurația de lucru va pune în scenă noua linie pentru confirmare, dar linia va părea că a fost anulată în acesta.

Evitați să utilizați aceste construcții sau faceți acest lucru cu mare precauție.

eliminarea conținutului neatins

Conținutul care nu diferă între index și structura de lucru poate fi afișat pe linii de context, începând cu un " " (spațiu). Puteți etapiza liniile de context pentru a fi eliminate prin transformarea spațiului în "-". Fișierul configurat în structura de lucru va apărea pentru a reintroduce conținutul.

modificarea conținutului existent

Se pot modifica, de asemenea, liniile de context, prin pregătirea lor pentru eliminare (prin transformarea " " în "-") și adăugarea unei linii "+" cu noul conținut. În mod similar, se pot modifica liniile "+" pentru adăugirile sau modificările existente. În toate cazurile, noua modificare va apărea inversată în configurația de lucru.

conținut nou

De asemenea, puteți adăuga conținut nou care nu există în patch; pur și simplu adăugați linii noi, fiecare începând cu "+". Adăugarea va apărea inversată în configurația de lucru.

Există, de asemenea, câteva operațiuni care ar trebui evitate în totalitate, deoarece acestea vor face imposibilă aplicarea patch-ului:

  • adăugarea de linii de context (" ") sau de eliminare ("-")

  • ștergerea liniilor de context sau de eliminare

  • modificarea conținutului liniilor de context sau de eliminare

GIT

Parte a suitei git[1]

scroll-to-top