Как добавить несколько файлов в Git одновременно


120

Это будет мое первое использование git. Я добавил новые файлы (много) в папку / проект (локальный репозиторий git).

Я просмотрел онлайн-руководства и форумы и увидел, что могу

git commit -a

Итак, я перехожу в базовую папку репозитория и делаю

sudo git commit -a

Но затем появляется несколько экранов и меня просят добавить комментарий, что я и делаю. я не знаю, как продолжить или выйти. Я не хочу напортачить, поэтому нажал Ctrl + Z и ничего не сделал.

Не могли бы вы, ребята, описать команды, которые мне нужно использовать?

git commit -a 

и

git push?

1
git commit -aоткрывает редактор для ввода сообщения фиксации. Введите сообщение, которое хотите видеть в журнале, и выйдите из редактора. На этом фиксация завершена. Затем отправьте свои изменения в удаленный репозиторий, git push <remote name> <branch name>например:git push remote master
Bhaskar

3
также обратите внимание, вам не нужно (и не следует) использоватьsudo
dax

Спасибо за ответ. Если я не использую sudo, я получаю сообщение об ошибке в разрешении отказано.
кишор.

2
Раньше вы использовали sudo, и, вероятно, в вашем рабочем каталоге есть файлы, которые теперь по ошибке принадлежат пользователю root. На этом этапе выполнение других операций без sudo приведет к ошибке отказа в разрешении, поскольку вы не можете изменить эти файлы, принадлежащие пользователю root. Ваш репозиторий может быть немного беспорядочным, и, возможно, лучше начать заново (и не использовать sudo).
Грег Хьюгилл,

если вы хотите добавить все файлы, вы можете использовать `git add -a`. Но если вы хотите добавить несколько выбранных файлов. вы можете использовать `git add -i '. обратитесь к этому git-scm.com/book/en/v2/Git-Tools-Interactive-Staging . это вам поможет.
Капила Ранасингхе

Ответы:


120

Чтобы добавить все внесенные вами изменения:

git add .

Чтобы совершить их:

git commit -m "MY MESSAGE HERE" # -m - флаг сообщения

Вы можете собрать эти шаги следующим образом:

git commit -a -m "MY MESSAGE HERE"

Чтобы передать зафиксированные изменения из локального репозитория в удаленный репозиторий:

git push origin master

После этого вам, возможно, придется ввести свое имя пользователя / пароль для github. Вот хороший учебник по использованию git. Немного устарел, но очень хорошо описывает происходящее.


Будут ли -aдобавляться новые (неустановленные) файлы перед фиксацией?
SabreWolfy

git commit -aэто сокращение от git commit --all, так что да, будет.
dax

1
$ man git-commitвключает это для -a: «Скажите команде, чтобы автоматически обрабатывала файлы, которые были изменены и удалены, но новые файлы, о которых вы не сообщили Git, не затронуты.», вот почему я спросил.
SabreWolfy

Для полноты картины самый простой способ добавить несколько файлов одного типа - использовать звездочку, например, для html используйте «git add * .html»
Иньока

384

Используйте git addкоманду, за которой следует список имен файлов, разделенных пробелами. Включите пути, если в других каталогах, например directory-name/file-name.

git add file-1 file-2 file-3

1
Простое указание имени файла дает эту ошибку «fatal: pathspec 'filename.java' не соответствует ни одному файлу». Вместо этого укажите полный путь к файлу и имя файла, например 'git add long / path / {file1, file2, ..., filen}'
Шраван Рамамурти

4
Это не работает, если одно из имен файлов включает пробел с git 1.9.5
Максим Хелен

Нам нужно удалить из этого «<» и «>». Это кого-то запутает.
Саид Энтезари,

очень помог мне
Хесус Санчес,

30

Как уже упоминалось, возможный способ - использовать интерактивную постановку git . Это здорово, когда у вас есть файлы с разными расширениями

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

Если нажать , 2 то enterвы получите список доступных файлов , которые будут добавлены:

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

Теперь вы просто должны указать число файлов , которые вы хотите добавить, поэтому , если мы хотим добавить TODOи index.htmlмы напечатали бы1,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>>

Вы видите * перед числом? это означает, что файл был добавлен.

А теперь представьте, что у вас есть 7 файлов, и вы хотите добавить их все, кроме 7-го? Конечно, мы могли бы печатать, 1,2,3,4,5,6но представьте себе, что вместо 7 у нас есть 16, это было бы довольно громоздко, хорошо, что нам не нужно вводить их все, потому что мы можем использовать диапазоны, набрав1-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>>

Мы даже можем использовать несколько диапазонов, поэтому, если мы хотим от 1 до 3 и от 5 до 7, мы набираем 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>>

Мы также можем использовать это для деактивации файлов, если мы введем -number, поэтому, если мы хотим деактивировать файл с номером 1, мы должны ввести -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>>

И, как вы понимаете, мы также можем деактивировать ряд файлов, поэтому, если мы введем -rangeвсе файлы в этом диапазоне, будут неустановленными. Если бы мы хотели отключить все файлы с 5 по 7, мы бы набрали -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
лично мне нравится такой путь. им легко пользоваться, когда у вас есть больше файлов для фиксации и других операций.
Капила Ранасингхе

После того, как вы закончили, как вы закончите интерактивную постановку?
Crparedes,

1
@Crparedes после того, как вы добавили файлы, если вы снова нажмете Enter, он вернется в меню, тогда вам нужно будет выбрать вариант 7выхода из интерактивной постановки.
Фабио Антунес,

28

Вы также можете выбрать несколько таких файлов

git add folder/subfolder/*

Это добавит все файлы в указанную подпапку. Очень полезно, когда вы редактируете кучу файлов, но хотите просто зафиксировать некоторые из них ...


14

Если вы хотите добавить несколько файлов в заданную папку, вы можете разделить их с помощью {,}. Это замечательно, если вы не повторяете длинные пути, например

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

Остерегайтесь пробелов между ,.


что здесь длинный / путь /? @EliuX
lalithkumar

long / path может быть строкой пути с очень большой длиной, поэтому удобнее не повторять такую ​​часть, не cd
вставляя

4

Когда вы меняете файлы или добавляете новые в репозиторий, вы сначала должны их подготовить.

git add <file>

или если вы хотите поставить все

git add .

Делая это, вы сообщаете git, какие файлы вы хотите использовать в следующем коммите. Затем вы делаете:

git commit -m 'your message here'

Ты используешь

git push origin master

где origin - это ветка удаленного репозитория, а master - ваша локальная ветка репозитория.


Спасибо!. По последней команде git push origin master. На самом деле я работаю над другим именем ветки (которое было создано из основной ветки). ТАК, мне нужно ввести имя моей ветки или мастера происхождения.
Еще

Нет проблем. :) Да, вы должны использовать имена своих веток, origin master - это просто примеры.
somi

1

Похоже, git запускает ваш редактор (возможно vi), чтобы вы могли ввести сообщение о фиксации. Если вы не знакомы с vi, это легко узнать основы . Альтернативы:

  • Используйте, git commit -a -m "my first commit message"чтобы указать сообщение фиксации в командной строке (использование этого не запускает редактор)

  • Установите EDITORпеременную среды в редактор, с которым вы знакомы


Спасибо всем, кто ответил. Я успешно зафиксировал и отправил свои файлы.
кишор.

1

Если вы хотите подготовить и зафиксировать все свои файлы на Github, сделайте следующее:

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

0

👉 шаг1 .

git init

👉 шаг2.

а) для всех файлов

git add -a

б) только конкретная папка

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

👉 step3.

git commit -m "Your message about the commit"

👉 step4.

введите описание изображения здесь

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

👉 шаг5 .

git push -u origin master
git push origin master

если вы столкнулись с этой ошибкой, чем

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

👉 Используйте эту команду

git push --force origin master
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.