Как добавить несколько файлов в 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.