freeCodeCamp/guide/russian/miscellaneous/how-to-use-git-rebase/index.md

4.8 KiB
Raw Blame History

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 .