Як додати кілька файлів до Git одночасно


120

Це буде моє перше використання git. Я додав нові файли (багато) до папки / проекту (локальне сховище git).

Я пройшов онлайн-уроки та форуми і бачу, що я можу зробити

git commit -a

Тому я переходжу до базової папки сховища і роблю 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. У вашому сховищі може бути трохи безладу, і, можливо, найкраще почати спочатку (а не використовувати судо).
Грег Х'югілл

якщо ви хочете додати всі файли, ви можете використовувати `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, так що так, так і буде.
дакс

1
$ man git-commitвключає це для -a: "Скажіть команді автоматично встановлювати файли, які були змінені та видалені, але нові файли, про які ви не розповіли Git, не впливають.", тому я і запитав.
SabreWolfy

Для повноти найпростіший спосіб додавання декількох файлів одного типу - це використання зірочки, наприклад, для html використання "git add * .html"
Inyoka

382

Скористайтеся 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
Maxime Helen

Нам потрібно видалити "<" і ">" з цього. Це когось збентежить.
Саїд Ентезарі

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

де походження є віддаленою гілкою сховища, а майстер - це ваша локальна гілка сховища.


Дякую!. Остання команда git push origin master. Я фактично працюю над іншою назвою гілки (яка була створена з головного відділення). Так мені потрібно ввести своє ім'я філії чи майстра походження. Ще раз спасибі
kishore.

Немає проблем. :) Так, ви повинні використовувати назви своїх філій, майстер походження - лише приклади.
сомі

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"

👉 крок4.

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

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.