Git Pull vs Git Rebase


123

Я нуб в Git, і намагаючись зрозуміти різницю між git pullпроти git rebase. Чи може хтось навести приклад, коли використовувати якийсь варіант, оскільки я вважаю, що обидва служать одній цілі.


Так. Різниця між pull і rebase полягає в тому, що pull робить злиття. Тож відповідь на ваше запитання - за посиланням, яке я вставив.
Тібо Д.

1
@ user4943236 1) Ви навіть не знаєте, хто викликав ваше запитання, не обмінюйте звинувачення людей без жодної причини 2) якби це був мій голос, я б його не видаляв просто тому, що на це так легко знайти відповідь, прочитавши документація
Тім


Чи відповідає це на ваше запитання? git pull VS git fetch Vs git
rebase

Відповіді:


130

git pull і git rebase не є взаємозамінними, але вони тісно пов'язані.

git pullотримує останні зміни поточної гілки з віддаленого місця та застосовує ці зміни до вашої локальної копії гілки. Як правило, це відбувається об'єднанням, тобто локальні зміни об'єднуються у віддалені зміни. Так git pullсхоже на git fetch & git merge.

Звільнення є альтернативою злиття. Замість створення нового комітету, який поєднує дві гілки, він переміщує комітети однієї з гілок поверх іншої.

Ви можете потягнути за допомогою rebase замість merge ( git pull --rebase). Місцеві зміни, які ви внесли, будуть повернутись на віддалені зміни замість того, щоб бути об'єднаними з віддаленими змінами.

Atlassian має чудову документацію щодо злиття та відновлення .


51

git-pull - витягнути з та інтегруватись з іншим сховищем або локальною гілкою GIT PULL

В основному ви тягнете віддалену гілку до свого локального, наприклад:

git pull origin master

Витягне головну гілку у ваше місцеве сховище

git-rebase - локальний порт вперед переходить до оновленої головки GIT REBASE

Цей додає ваші локальні зміни поверх змін, які здійснюються дистанційно іншими користувачами. Наприклад:

  • Ви внесли деякі зміни у місцевій філії, наприклад, зателефонували SOME-FEATURE
  • Твій друг тим часом працював над іншими особливостями, і він об'єднав свою гілку в майстер

Тепер ви хочете побачити його та ваші зміни у вашому місцевому відділенні. Тож тоді ви відділите masterвідділення:

git checkout master

тоді ви можете потягнути:

git pull origin master

і тоді ви переходите до своєї філії:

git checkout SOME-FEATURE

і ви можете виконати ребазацію, masterщоб отримати останні зміни від неї і поставити філій зобов’язання зверху:

git rebase master

Я сподіваюся, що зараз це трохи зрозуміліше для вас.


15
Вам не потрібно мати майстер оформлення замовлення. Залишайтеся на своїй гілці і робіть: git fetchтоді git rebase origin/master.
Антуан Мартін

Якщо перевірити місцевого майстра, а потім витягнути майстер походження, оновиться також ваш місцевий майстер. Це одна з найкращих практик, яку слід використовувати
Ашвані

20

Коротко :

-> Git Merge: Це просто об'єднає ваші та віддалені зміни, і це створить ще один запис історії фіксації

-> Git Rebase: це додасть ваші зміни до всіх нових віддалених змін та перепише історію фіксацій, тому історія ваших фіксацій буде набагато чистішою, ніж злиття git. База даних - це руйнівна операція. Це означає, що якщо ви не застосовуєте його правильно, ви можете втратити віддану роботу та / або порушити послідовність сховищ інших розробників.

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