Які відмінності між "git commit" та "git push"?


895

У підручнику з Git, який я переживаю, git commitвикористовується для зберігання внесених вами змін.

Для чого git pushвикористовується тоді?


83
Ви також можете перевірити "Git cheatsheet", який мені дуже допоміг зрозуміти концепцію: ndpsoftware.com/git-cheatsheet.html
adriendenat


2
відповіді немає, оскільки вона вже надана. просто спостереження. мені здається, що зобов’язання дійсно має бути названо збереженням, а поштовх повинен називатися фіксацією. Випуск сценарію класичного іменування.
дублінкс

Відповіді:


1619

В основному git commit" записує зміни в сховище ", в той час як git push" оновлює віддалені перегляд разом із пов'язаними об'єктами ". Отже, перший використовується у зв'язку з вашим локальним сховищем, а другий використовується для взаємодії з віддаленим сховищем.

Ось приємна картинка від Олівера Стіла , яка пояснює модель git та команди:

Команди транспортування даних Git

Детальніше про git pushта git pullна GitReady.com (стаття, про яку я згадувалась у першу чергу)


20
Ось першоджерело: osteele.com/archives/2008/05/my-git-workflow з іншим зображенням робочого процесу git
tanascius

9
@ben github - це лише одне рішення для розміщення вашої публіки, "локальної хмари", сховища для git pushроботи. Насправді пунктом призначення git pushможе бути будь-яке сховище git. Це може бути на вашому локальному жорсткому диску в іншому каталозі ( git remote add clone ~/proj/clone.git; git push clone masterабо git push ~/proj/clone.git master, наприклад), або сховищі git, яке обслуговує ваш власний хост.
Санта

2
так що ... вам потрібно спочатку підштовхнути чи здійснити перший?
Кокодоко

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

2
@ Mr.Hyde ні, що це неможливо. Git як контроль розподіленої версії вимагає наявності локальної копії.
танацій

215

фіксація : додавання змін до локального сховища

push : для передачі останньої комісії на віддалений сервер


56

Ну, в основному git commit вносить ваші зміни у ваше місцеве репо, тоді як git push надсилає ваші зміни у віддалене місце.


9
це мій другий день використання GIT. Коли я дивлюсь на відповіді вище, я все ще не отримую чіткої картини, але ваша відповідь це просто приховує. Дякую.
Бофа

1
Чи git pushзавантажує фактично оновлені файли чи якийсь спеціальний "розрізний" файл?
multigoodverse

27

git pushвикористовується для додавання комісій, які ви зробили в локальному сховищі, до віддаленого - разом із git pullцим він дозволяє людям співпрацювати.


26

Оскільки git - це система управління розподіленою версією, відмінність полягає в тому, що фіксація вчинить зміни у вашому локальному сховищі, тоді як натискання підштовхне зміни до віддаленого репо.


19

Фіксація : Знімок | Набір змін | History_record | Версія | "Зберегти як" сховища. Git сховище = серія (дерево) комітів .

Локальне сховище: сховище на вашому комп’ютері.

Віддалене сховище: сховище на сервері ( Github ).

git commit: Додайте нову комісію (остання фіксація + поетапні модифікації) до локального сховища. (Усі комісії зберігаються в /.git)

git push, git pull: Синхронізуйте локальне сховище із пов'язаним із ним віддаленим сховищем. push- застосувати зміни від локального до віддаленого , pull- застосувати зміни від віддаленого до локального .


11

git commitзапишіть свої зміни до локального сховища.

git push оновлення з віддаленим сховищем з вашими локальними змінами.


20
Ваша відповідь в основному ідентична цій відповіді , вона не додає нічого нового.

7

Три речі, які слід зазначити:

1) робоча директорія ----- папка, в якій присутній наш код кодів

2) Локальний сховище ------ Це всередині нашої системи. Коли ми вперше робимо команду COMMIT, тоді створюється цей локальний репозиторій. там же, де знаходиться наш робочий каталог,
створюється файл Checkit (.git).
Після цього, коли коли-небудь ми будемо робити зобов’язання, це збереже зміни, які ми внесемо у файл робочої каталоги до локального сховища (.git)

3) Віддалене сховище ----- Це розташоване поза нашою системою, як на серверах, розташованих будь-де в світі. як гітуб. Коли ми робимо команду PUSH, коди з нашого локального сховища зберігаються в цьому віддаленому сховищі


7

Просто хочу додати наступні моменти:

Yon не може натискати, поки ви не скористаєтеся, як ми використовуємо git pushдля того, щоб пересилати комісії, зроблені на вашому місцевому відділенні, до віддаленого сховища.

git pushКоманда приймає два аргументи:

Віддалене ім'я, наприклад, origin назва гілки, наприклад,master

Наприклад:

git push  <REMOTENAME> <BRANCHNAME> 
git push  origin       master

4

Дуже жорстка аналогія: якщо ми порівнюємо git commitіз збереженням відредагованого файлу, то git pushце буде копіювання цього файлу в інше місце.

Будь ласка, не виймайте цю аналогію з цього контексту - введення та натискання не зовсім схоже на збереження відредагованого файлу та його копіювання. Однак це повинно мати порівняння.


1

Простіше зрозуміти використання команд git, addі commitякщо ви уявляєте, що файл журналу зберігається у вашому сховищі в Github. Типовий файл журналу для мене може виглядати так:

---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2

Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------

---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on

Зазвичай я починаю свій день із git pullпрохання і закінчую його git pushпроханням. Тож все, що знаходиться у записі дня, відповідає тому, що відбувається між ними. Протягом кожного дня я виконую одне чи більше логічних завдань , які потребують зміни декількох файлів. Файли, відредаговані під час виконання цього завдання, перелічені в індексі.

Кожне з цих підзадач (Завдання А та Завдання Б тут) є індивідуальними комітетами. git addКоманда додає файли в список «Список змінених файлів». Цей процес також називають інсценуванням, і в реальності записуються зміни файлів та здійснені зміни. У git commitкомандному записи / допрацьовує зміни і відповідний список індексів поряд з одними повідомленнями , які можуть бути використані для подальшого використання.

Пам’ятайте, що ви все ще змінюєте лише локальну копію вашого сховища, а не ту, що знаходиться в Github. Після цього лише тоді, коли ви робите git pushвсі ці записані зміни, разом із вашими індекс-файлами для кожної комісії, входите в основний сховище (на Github).

Як приклад, щоб отримати другий запис у цьому уявному файлі журналу, я зробив би:

git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push

Коротше кажучи, git addі git commitдозволяє вам розбити зміну основного сховища на систематичні логічні зміни. Як вказували інші відповіді та коментарі, для них, звичайно, є набагато більше користі. Однак, це одне з найпоширеніших звичаїв і принцип руху, що лежить в основі Git - це багатоступенева система управління ревізією на відміну від інших популярних, таких як Svn.


0

git commit - це не що інше, як збереження наших змін, офіційно - за кожне зобов’язання ми передаємо повідомлення про фіксацію, як тільки ми виконаємо з зобов’язаннями, ми можемо натиснути його на віддалене місце, щоб побачити зміни в глобальному масштабі.

а це означає, що ми можемо зробити численні коміти, перш ніж натиснути на віддалений (ми можемо побачити список комітетів, що трапилися, і повідомлення теж) git зберігає кожну комісію з ідентифікатором фіксації, який є 40-значним кодом

і я використовую git push лише тоді, коли мені хотілося побачити зміни в дистанційному (Там після я перевірю, чи працював мій код у дженкінсах)


-1

Ну, в основному git commit вносить ваші зміни у ваше місцеве репо, тоді як git push надсилає ваші зміни у віддалене місце. Оскільки git - це система управління розподіленою версією, відмінність полягає в тому, що фіксація вчинить зміни у вашому локальному сховищі, тоді як натискання призведе зміни до віддаленого репо

джерело Google

http://gitref.org/basic/ це посилання також буде дуже корисним

https://git-scm.com/docs/git-commit


Ця відповідь копіює слово за словом інші відповіді в одну.
Джеффірі Опоку-Менса

Це не приносить нічого нового для всього, що вже було сказано раніше
hublo


-2

git commitполягає в закріпленні файлів, розміщених у місцевому репо. git pushполягає в тому, щоб швидко перемотати вперед об'єднання головного відділення локальної сторони з віддаленою головною гілкою. Але злиття не завжди матиме успіх. Якщо з'явиться відмова, вам доведеться зробити pullтак, щоб ви могли зробити успішним git push.


Деякі люди можуть захотіти натискати, а не тягнути. Це залежить від ситуації. Насправді, якщо ви переоплачуєте фіксацію на гілці, якою ви не ділитесь з іншими людьми (навіть на віддаленому репо), то натягування, звичайно, не те, що ви хочете робити.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.