Come aggiungere più file a Git contemporaneamente


120

Questo sarà il mio primo utilizzo di git. Ho aggiunto nuovi file (molti) alla cartella / progetto (repository locale git).

Ho seguito tutorial e forum online e ho visto che posso fare

git commit -a

Quindi vado alla cartella di base del repository e faccio un file

sudo git commit -a

Ma poi, alcune schermate si aprono e mi chiedono di aggiungere un commento, cosa che faccio. non so come procedere o uscire. Non voglio fare confusione quindi ho fatto ctrl + Z e non ho fatto nulla.

Ragazzi, potete descrivere i comandi che devo usare?

git commit -a 

e

git push?

1
git commit -aapre un editor in cui digitare il messaggio di commit. Immettere un messaggio che si desidera visualizzare come registro e uscire dall'editor. Questo completa il commit. Seguilo spingendo le tue modifiche al repository remoto usando git push <remote name> <branch name>comegit push remote master
Bhaskar

3
nota inoltre, non è necessario (e non dovresti) usaresudo
dax

Grazie per la risposta Se non uso sudo ottengo il permesso negato errore.
kishore.

2
Avendo usato sudo in precedenza, probabilmente hai dei file nella tua directory di lavoro che ora sono erroneamente di proprietà di root. A questo punto, eseguire altre operazioni senza sudo causerà un errore di autorizzazione negata perché non è possibile modificare i file di proprietà di root. Il tuo repository potrebbe essere un po 'confuso e potrebbe essere meglio ricominciare da capo (e non usare sudo).
Greg Hewgill

se vuoi aggiungere tutti i file puoi usare `git add -a`. Ma se vuoi aggiungere più file selezionati. puoi usare `git add -i '. si prega di fare riferimento a questo git-scm.com/book/en/v2/Git-Tools-Interactive-Staging . questo ti aiuterà.
Kapila Ranasinghe

Risposte:


120

Per aggiungere tutte le modifiche apportate:

git add .

Per impegnarli:

git commit -m "MY MESSAGE HERE" # -m è il flag del messaggio

Puoi mettere insieme questi passaggi in questo modo:

git commit -a -m "MY MESSAGE HERE"

Per inviare le modifiche salvate dal tuo repository locale al tuo repository remoto:

git push origin master

Potresti dover digitare il tuo nome utente / password per GitHub dopo questo. Ecco un buon primer sull'uso di git. Un po 'vecchio, ma copre molto bene quello che sta succedendo.


Sarà -aaggiungere i file nuovi (unstaged) prima del commit?
SabreWolfy

git commit -aè una scorciatoia per git commit --all, quindi sì, lo farà.
dax

1
$ man git-commitinclude questo per -a: "Dì al comando di mettere in scena automaticamente i file che sono stati modificati ed eliminati, ma i nuovi file di cui non hai parlato a Git non sono interessati.", motivo per cui l'ho chiesto.
SabreWolfy

Per completezza, il modo più semplice per aggiungere più file di un tipo è usare l'asterisco, ad esempio per html usa "git add * .html"
Inyoka

382

Usa il git addcomando, seguito da un elenco di nomi di file separati da spazi. Includere percorsi se in altre directory, ad es directory-name/file-name.

git add file-1 file-2 file-3

1
Basta specificare il nome del file per ottenere questo errore "fatale: pathspec 'filename.java' non corrisponde ad alcun file". Specificare invece l'intero percorso del file e il nome del file in questo modo "git add long / path / {file1, file2, ..., filen}"
Shravan Ramamurthy

4
Questo non funziona quando uno dei nomi dei file include uno spazio bianco con git 1.9.5
Maxime Helen

Dobbiamo rimuovere "<" e ">" da questo. Questo confonderà qualcuno.
Saeed Entezari

30

Come alcuni hanno già detto, un possibile modo è usare lo staging interattivo git . Questo è ottimo quando hai file con estensioni diverse

$ git add -i
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help
What now>

Se si preme 2 quindi entersi otterrà un elenco di file disponibili da aggiungere:

What now> 2
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

Ora non ti resta che inserire il numero dei file che vuoi aggiungere, quindi se volessimo aggiungere TODOe index.htmlvorremmo digitare1,2

Update>> 1,2
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

Vedi la * prima del numero? ciò significa che il file è stato aggiunto.

Ora immagina di avere 7 file e vuoi aggiungerli tutti tranne il 7 °? Certo che potremmo scrivere 1,2,3,4,5,6ma immagina che invece di 7 abbiamo 16, sarebbe piuttosto ingombrante, la cosa buona che non abbiamo bisogno di digitarli tutti perché possiamo usare intervalli, digitando1-6

Update>> 1-6
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
* 4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

Possiamo anche utilizzare più intervalli, quindi se vogliamo da 1 a 3 e da 5 a 7 digitiamo 1-3, 5-7:

Update>> 1-3, 5-7
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

Possiamo anche usarlo per rimuovere dallo stage i file, se digitiamo -number, quindi se volessimo annullare lostage del file numero 1 dovremmo digitare -1:

Update>> -1
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

E come puoi immaginare, possiamo anche rimuovere lo stage da un intervallo di file, quindi se digitiamo -rangetutti i file su quell'intervallo sarebbe unstage. Se volessimo rimuovere tutti i file da 5 a 7, dovremmo digitare -5-7:

Update>> -5-7
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
  5:    unchanged        +5/-1 file5.html
  6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

2
personalmente mi piace in questo modo. è facile da usare quando hai più file su cui eseguire il commit e altre operazioni.
Kapila Ranasinghe

Una volta terminata, come finisci la messa in scena interattiva?
Crparedes

1
@Crparedes una volta aggiunti i file, se si preme nuovamente invio si torna al menu, quindi si deve scegliere l'opzione 7per uscire dallo staging interattivo.
Fabio Antunes

28

Puoi anche selezionare più file come questo

git add folder/subfolder/*

Questo aggiungerà tutti i file nella sottocartella specificata. Molto utile quando modifichi un gruppo di file ma vuoi solo impegnarne alcuni ...


14

Se desideri aggiungere più file in una determinata cartella, puoi dividerli utilizzando {,}. Questo è fantastico per non ripetere lunghi percorsi, ad es

git add long/path/{file1,file2,...,filen}

Attenzione a non mettere spazi tra i file ,.


cosa è lungo / percorso / qui? @EliuX
lalithkumar,

lungo / percorso potrebbe essere una stringa di percorso con una lunghezza molto lunga, quindi è più comodo non ripetere tale parte, senza doverlo cdinserire
EliuX

4

Quando modifichi i file o ne aggiungi di nuovi nel repository, devi prima metterli in scena.

git add <file>

o se vuoi mettere in scena tutto

git add .

In questo modo stai dicendo di git quali file vuoi nel tuo prossimo commit. Quindi fai:

git commit -m 'your message here'

Usate

git push origin master

dove origin è il ramo del repository remoto e master è il ramo del repository locale.


Grazie!. All'ultimo comando git push origin master. In realtà sto lavorando su un nome di ramo diverso (che è stato creato dal ramo principale). Quindi devo inserire il nome del mio ramo o il master di origine. Grazie ancora
kishore.

Nessun problema. :) Sì, dovresti usare i nomi dei tuoi rami, i master di origine sono solo esempi.
somi

1

Sembra che git stia lanciando il tuo editor (probabilmente vi) in modo che tu possa digitare un messaggio di commit. Se non hai familiarità con vi, è facile imparare le basi . Le alternative sono:

  • Utilizzare git commit -a -m "my first commit message"per specificare il messaggio di commit sulla riga di comando (l'utilizzo di questo non avvierà un editor)

  • Imposta la EDITORvariabile d'ambiente su un editor che conosci


Grazie mille a tutti coloro che hanno risposto. Ho eseguito correttamente il commit e il push dei miei file.
kishore.

1

Se vuoi eseguire lo stage e il commit di tutti i tuoi file su Github, procedi come segue;

git add -A                                                                                
git commit -m "commit message"
git push origin master

0

👉 passaggio1 .

git init

👉 step2.

a) per tutti i file

git add -a

b) solo cartella specifica

git add <folder1> <folder2> <etc.>

👉 step3.

git commit -m "Your message about the commit"

👉 step4.

inserisci qui la descrizione dell'immagine

git remote add origin https://github.com/yourUsername/yourRepository.git

👉 passaggio5 .

git push -u origin master
git push origin master

se stai affrontando questo errore di

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/harishkumawat2610/Qt5-with-C-plus-plus.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

👉 Usa questo comando

git push --force origin master
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.