Files
freeCodeCamp/guide/russian/miscellaneous/how-to-use-git-rebase/index.md
2018-10-16 21:32:40 +05:30

4.8 KiB
Raw Blame History

title, localeTitle
title localeTitle
How to Use Git Rebase Как использовать Git Rebase

Вы ссылались на эту страницу, чтобы принять ваш PR? Прокрутите направо до Git Rebase в FCC!

git rebase - чрезвычайно полезный инструмент, который связан с переписыванием git-истории, хотя чаще всего используется для раздачи нескольких коммитов в один. Хотя это полезно в этом случае, это не единственная функция, которую может выполнять команда git rebase . Фактически это оказывается гораздо более полезным при использовании для предполагаемой функции, которую предлагает его название: существенно перестроить ветвь. Позвольте мне объяснить, что я имею в виду.

Скажем, у вас есть репозиторий, например:

                                                  --- Commit 5 ----------- auth branch 
                                                / 
                                               --- Commit 4 -------------- dev branch 
                                             / 
 --- Commit 1 ---- Commit 2 ---- Commit 3 -------------------------------- master branch 

Если вы хотите объединить ветвь auth веткой dev , git выдает вам ошибку, потому что ваша ветка auth устарела: она не учитывает Commit 4. Вам нужно будет довести ваш филиал вверх- на свидание.

Git предоставляет вам два метода для этого: команду merge и команду rebase . Для изучения команды merge посетите соответствующую статью wiki: Git Merge

Теперь rebase :

$ git checkout auth 
 $ git rebase dev 

Теперь репо будет выглядеть так:

                                                                 --- Commit 5 --- auth branch 
                                                               / 
                                               --- Commit 4 --------------------- dev branch 
                                             / 
 --- Commit 1 ---- Commit 2 ---- Commit 3 --------------------------------------- master branch 

Вы видите, что произошло? Git по существу сохранил коммиты в ветке auth , «удалил» его, а затем снова создал с теми же фиксациями после коммитов в ветви dev . Это означает, что Commit 4 существует только в ветви dev а не в ветке auth ! И это действительно все! Сначала это может показаться немного запутанным, но попытайтесь понять диаграмму. Это чрезвычайно полезный инструмент.

Git-Rebase в FCC

Предотвращение конфликтов слияния

Если вы вносите вклад в кодовую базу FCC или планируете это делать, всегда запускайте эту команду, прежде чем вносить какие-либо изменения в свои локальные файлы и нажимайте их:

git pull --rebase upstream staging

Если у вас нет upstream настроения, запустите эту команду, прежде чем запускать указанную выше команду (git выдает ошибку, потому что она не знает, что происходит вверху): git remote add upstream https://github.com/freecodecamp/freecodecamp.git

Это приведет к последним изменениям в филиале FCC и переустановке их с помощью промежуточной ветви fork, чтобы у вас не было конфликтов при открытии PR :slight_smile:

давя

Если у вас есть несколько коммитов, которые вы хотите раздавить в один, следуйте инструкциям для Squashing .