Comment ajouter plusieurs fichiers à Git en même temps

120

Ce sera ma première utilisation de git. J'ai ajouté de nouveaux fichiers (beaucoup) au dossier / projet (référentiel git local).

J'ai parcouru des didacticiels et des forums en ligne et je vois que je peux le faire

git commit -a

Je vais donc dans le dossier de base du référentiel et fais un

sudo git commit -a

Mais ensuite, certains écrans apparaissent et me demandent d'ajouter un commentaire, ce que je fais. je ne sais pas comment procéder ou sortir. Je ne veux pas gâcher alors j'ai fait ctrl + Z et je n'ai rien fait.

Pouvez-vous décrire les commandes que je dois utiliser?

git commit -a 

et

git push?
kishore.
la source
1
git commit -aouvre un éditeur pour vous permettre de taper le message de validation. Entrez un message que vous souhaitez voir comme journal et quittez l'éditeur. Ceci termine la validation. Suivez cela en poussant vos modifications vers le référentiel distant en utilisant git push <remote name> <branch name>par exemplegit push remote master
Bhaskar
3
notez également que vous n'avez pas besoin (et ne devriez pas) utilisersudo
dax
Merci pour la réponse.Si je n'utilise pas sudo, j'obtiens une erreur d'autorisation refusée.
kishore.
2
Après avoir utilisé sudo précédemment, vous avez probablement des fichiers dans votre répertoire de travail qui appartiennent maintenant à tort à root. À ce stade, effectuer d'autres opérations sans sudo entraînera une erreur d'autorisation refusée car vous ne pouvez pas modifier les fichiers appartenant à root. Votre référentiel peut être un peu en désordre et il peut être préférable de recommencer (et de ne pas utiliser sudo).
Greg Hewgill
si vous voulez ajouter tous les fichiers, vous pouvez utiliser `git add -a` .Mais si vous voulez ajouter plusieurs fichiers sélectionnés. vous pouvez utiliser `git add -i '. veuillez vous référer à ce git-scm.com/book/en/v2/Git-Tools-Interactive-Staging . cela vous aidera.
Kapila Ranasinghe

Réponses:

120

Pour ajouter toutes les modifications que vous avez apportées:

git add .

Pour les engager:

git commit -m "MY MESSAGE HERE" # -m est l'indicateur de message

Vous pouvez assembler ces étapes comme ceci:

git commit -a -m "MY MESSAGE HERE"

Pour transférer vos modifications validées de votre référentiel local vers votre référentiel distant:

git push origin master

Vous devrez peut-être taper votre nom d'utilisateur / mot de passe pour github après cela. Voici une bonne introduction à l'utilisation de git. Un peu vieux, mais ça couvre très bien ce qui se passe.

dax
la source
-aAjoutera- t-il de nouveaux fichiers (non mis en scène) avant la validation?
SabreWolfy
git commit -aest un raccourci pour git commit --all, donc oui, il le sera.
dax le
1
$ man git-commitinclut ceci pour -a: "Dites à la commande de mettre en scène automatiquement les fichiers qui ont été modifiés et supprimés, mais les nouveaux fichiers dont vous n'avez pas parlé à Git ne sont pas affectés.", c'est pourquoi j'ai demandé.
SabreWolfy
Pour être complet, le moyen le plus simple d'ajouter plusieurs fichiers d'un même type est d'utiliser l'astérisque, par exemple pour le HTML, utilisez "git add * .html"
Inyoka
384

Utilisez la git addcommande, suivie d'une liste de noms de fichiers séparés par des espaces. Incluez les chemins si dans d'autres répertoires, par exemple directory-name/file-name.

git add file-1 file-2 file-3
Reggie Pinkham
la source
1
Le simple fait de spécifier le nom du fichier donne cette erreur "fatal: pathspec 'filename.java' ne correspond à aucun fichier". Au lieu de cela, spécifiez le chemin d'accès complet du fichier et le nom du fichier comme ceci 'git add long / path / {file1, file2, ..., filen}'
Shravan Ramamurthy
4
Cela ne fonctionne pas quand l'un des noms de fichier inclut un espace avec git 1.9.5
Maxime Helen
Nous devons supprimer "<" et ">" de ceci. Cela déroutera quelqu'un.
Saeed Entezari le
très utile pour moi
Jesús Sánchez
30

Comme certains l'ont mentionné, un moyen possible consiste à utiliser la mise en scène interactive git . C'est génial lorsque vous avez des fichiers avec différentes extensions

$ 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>

Si vous appuyez 2 alors entervous obtiendrez une liste des fichiers disponibles à ajouter:

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>>

Il ne vous reste plus qu'à insérer le nombre de fichiers que vous souhaitez ajouter, donc si nous voulions ajouter TODOet index.htmlnous taperions1,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>>

Vous voyez l' * avant le numéro? cela signifie que le fichier a été ajouté.

Imaginez maintenant que vous avez 7 fichiers et que vous voulez les ajouter tous sauf le 7? Bien sûr, nous pourrions taper 1,2,3,4,5,6mais imaginez au lieu de 7 nous en avons 16, ce serait assez encombrant, la bonne chose que nous n'avons pas besoin de les taper tous car nous pouvons utiliser des plages, en tapant1-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>>

Nous pouvons même utiliser plusieurs plages, donc si nous voulons de 1 à 3 et de 5 à 7 nous tapons 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>>

Nous pouvons également l'utiliser pour désinstaller des fichiers, si nous tapons -number, donc si nous voulions désinstaller le fichier numéro 1, nous taperions -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>>

Et comme vous pouvez l'imaginer, nous pouvons également désinstaller une plage de fichiers, donc si nous -rangetapons tous les fichiers de cette plage, ils ne seront pas mis en scène. Si nous voulions désinstaller tous les fichiers de 5 à 7, nous taperions -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>>
Fabio Antunes
la source
2
personnellement j'aime de cette façon. il est facile à utiliser lorsque vous avez plus de fichiers à valider et d'autres opérations.
Kapila Ranasinghe
Une fois que vous avez terminé, comment finissez-vous la mise en scène interactive?
Crparedes le
1
@Crparedes une fois que vous avez ajouté les fichiers, si vous appuyez à nouveau sur Entrée, cela revient au menu, vous devez choisir l'option 7pour quitter la mise en scène interactive.
Fabio Antunes le
28

Vous pouvez également sélectionner plusieurs fichiers comme celui-ci

git add folder/subfolder/*

Cela ajoutera tous les fichiers dans le sous-dossier spécifié. Très utile lorsque vous éditez un tas de fichiers mais que vous voulez juste en valider certains ...

nadalsol
la source
14

Si vous souhaitez ajouter plusieurs fichiers dans un dossier donné, vous pouvez les diviser en utilisant {,}. C'est génial pour ne pas répéter de longs chemins, par exemple

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

Attention à ne pas mettre d'espaces entre les fichiers ,.

EliuX
la source
qu'est-ce que long / chemin / ici? @EliuX
lalithkumar
long / path pourrait être une chaîne de chemin avec une très longue longueur, il est donc plus confortable de ne pas répéter une telle partie, sans avoir à y cdentrer
EliuX
4

Lorsque vous modifiez des fichiers ou en ajoutez de nouveaux dans le référentiel, vous devez d'abord les préparer.

git add <file>

ou si vous voulez tout mettre en scène

git add .

En faisant cela, vous dites à git quels fichiers vous voulez dans votre prochain commit. Ensuite, vous faites:

git commit -m 'your message here'

Tu utilises

git push origin master

où origin est la branche du référentiel distant et master est votre branche de référentiel locale.

somi
la source
Je vous remercie!. Sur la dernière commande git push origin master. Je travaille actuellement sur un nom de branche différent (qui a été créé à partir de la branche principale). Dois-je donc entrer le nom de ma succursale ou mon maître d'origine. Merci encore
kishore.
Pas de problème. :) Oui, vous devriez utiliser les noms de vos branches, le master d'origine ne sont que des exemples.
somi
1

On dirait que git lance votre éditeur (probablement vi) pour que vous puissiez taper un message de validation. Si vous n'êtes pas familier avec vi, il est facile d'apprendre les bases . Les alternatives sont:

  • Utilisez git commit -a -m "my first commit message"pour spécifier le message de validation sur la ligne de commande (l'utiliser ne lancera pas d'éditeur)

  • Définissez la EDITORvariable d'environnement sur un éditeur que vous connaissez bien

Greg Hewgill
la source
Merci beaucoup à tous ceux qui ont répondu. J'ai réussi à valider et à pousser mes fichiers.
kishore.
1

Si vous souhaitez mettre en scène et valider tous vos fichiers sur Github, procédez comme suit;

git add -A                                                                                
git commit -m "commit message"
git push origin master
Johnson Ogwuru
la source
0

👉 step1 .

git init

👉 étape2.

a) pour tous les fichiers

git add -a

b) uniquement dossier spécifique

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

👉 step3.

git commit -m "Your message about the commit"

👉 étape4.

entrez la description de l'image ici

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

👉 step5 .

git push -u origin master
git push origin master

si vous êtes confronté à cette erreur que

 ! [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.

👉 Utilisez cette commande

git push --force origin master
Harish Kumawat
la source