Git: додавати vs push vs фіксувати


115

Яка різниця між git add, pushі commit?

Трохи розгублений прихід від SVN, де "update" додасть "речі", а команда робить "push" і також "add"

У Git є всі різні функції. Сподіваючись на якесь пояснення з вашого досвіду.


2
Приємна книга про git
iruediger

Відповіді:


163
  1. git addдодає ваші змінені файли до черги, яку потрібно зробити пізніше . Файли не вводяться

  2. git commitвиконує додані файли та створює нову редакцію з журналом ... Якщо ви не додасте жодних файлів, git нічого не зробить. Ви можете комбінувати обидві дії зgit commit -a

  3. git push пересилає ваші зміни до віддаленого сховища.

Ця цифра з цього git шпаргалки дає гарне уявлення про робочий процес

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

git addне на малюнку, тому що запропонований спосіб зробити комбінований git commit -a, але ви можете подумки додати a git addдо блоку змін, щоб зрозуміти потік.

Нарешті, причина того, що pushє окремою командою, полягає в gitросійській філософії. gitє розподіленою системою версій, а ваш локальний робочий каталог - ваше сховище! Усі внесені вами зміни миттєво відображаються та фіксуються. pushвикористовується лише для оновлення віддаленого репо-файлу (яким ви можете поділитися з іншими), коли ви закінчите з тим, над чим працюєте. Це акуратний спосіб роботи та збереження змін на місцевому рівні (без накладних витрат на мережу) та оновлювати їх лише тоді, коли ви цього хочете, а не під час кожного виконання. Це побічно призводить до більш легких комітетів / розгалужень тощо (чому б ні, правда? Що це коштує?), Що призводить до більшої кількості очок економії, не псуючи сховище.


Так чи натискання здійснює локально, а потім натискає на віддалений сервер чи потрібно спочатку здійснити, а потім натиснути, щоб отримати роботу до віддаленого сховища?
Andrew S

2
Спочатку ви повинні виконати ("git commit"), який оновлює ваш локальний сховище (він же на вашій локальній машині), потім вам доведеться перейти на сервер ("git push"), який оновлює віддалене сховище (наприклад, на сервері github, наприклад. )
Ромен

Я б хотів функцію "подумки додати" в Git!
Junchen Liu

1
Його радять не тільки часто вчиняти, але й часто натискати. Це захищає вашу роботу при збої жорсткого диска.
CCC

86

git add вибирає зміни

git commit записує зміни МІСЦЕ

git push зміни акцій


22
  • git add додає файли до індексу Git, який є місцем постановки для об'єктів, підготовлених до зйомки.
  • git commitпередає файли в індексі до сховища, git commit -aце ярлик, щоб спочатку додати всі модифіковані відстежені файли до індексу.
  • git push надсилає всі очікувані зміни до віддаленого сховища, до якого відображено ваше відділення (наприклад, у GitHub).

Для того, щоб зрозуміти Git, вам потрібно буде вкласти більше зусиль, ніж просто оглянути документацію, але це, безумовно, варто. Просто не намагайтеся наближати команди Git безпосередньо до Subversion, оскільки у більшості з них немає прямого аналога.


Хтось повинен пояснити різницю між місцевим та віддаленим github. Що у вас є в місцевому і рете. Це ключ, який вам потрібно знайти
Мехді Амроллахі

12

Мене розгубило те, що насправді "додавати". Я просто прочитав дуже просвічуючий абзац із книги Git Pro, який я хотів би додати тут, бо він роз'яснює речі

«Виявляється, Git ставить файл точно так само, як і під час запуску команди git add. Якщо ви скористаєтеся зараз, версія benchmarks.rb, як це було під час останнього запуску команди git add, - це те, як вона ввійде в команду, а не версія файлу, як це виглядає у вашому робочому каталозі під час запуску git commit. Якщо ви змінюєте файл після запуску git add, вам потрібно запустити git add ще раз, щоб переглянути останню версію файлу: "

Уривок: Чакон, Скотт. "Pro Git." Спрингер, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Цей матеріал може бути захищений авторським правом.


7

Додати каже git розпочати відстеження файлу.

Комісія здійснює ваші поточні зміни у вашому локальному сховищі

поштовх підштовхує локальну репо до верхнього течії.



5

Дуже приємний pdf про багато секретів GIT.

Додати те саме, що додаток svn (як це іноді використовується для позначення вирішеного файлу).

Комісія також є такою ж, як і svn, але вона здійснює зміни у вашому локальному сховищі.


2
Тепер мені потрібно піти шукати SVN, щоб додати та зробити. Мій великий страх: їхні документи потім направлять мене на додавання та фіксацію git. І lord_t є автором зазначених документів.
eric

Автор запитання знав SVN, тому я припускав, що він знає команди svn.
lord_t

0

add -in git використовується для того, щоб повідомити git, які файли ми хочемо зробити, він розміщує файли в області постановки

commit-in git використовується для збереження файлів на локальній машині, так що якщо ми внесемо якісь зміни або навіть видалимо файли, ми все одно зможемо відновити наші скоєні файли

push - якщо ми фіксуємо наші файли на локальній машині, вони все ще схильні до втрати, якщо наша локальна машина загубиться, пошкодиться тощо, щоб зберегти наші файли в безпеці або поділитися нашими файлами, як правило, ми хочемо, щоб наші файли були віддалені сховище типу Github. Для економії на віддалених сховищах ми використовуємо push

Приклад Постановка файлу з ім'ям index.html git Додати index.html

Здійснення файлу, який інсценізується git commit -m 'ім'я вашого комітету'

Відправлення файлу до майстра Github git push origin

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.