Понимание по умолчанию git push и rebase: практическое руководство
1 августа 2025 г.GIT стал фундаментальной частью повседневной жизни наших разработчиков, что трудно вспомнить нашу жизнь без нее. И все же, большинство из нас используют ограниченный набор командипараметры. Сегодня я хочу сосредоточиться на двух командах, которые большинство разработчиков, вероятно, используюткаждыйдень и посмотрите на по умолчанию позади них.
git push
Послеgit commitВgit pushВероятно, вторая наиболее используемая команда. Я не думаю, что я научу вас чему -нибудь с этой отрывом из документации:
git -push - обновить удаленные ссылки вместе с ассоциированными объектами
-GIT документация
Параметры по умолчанию нажимаюттекущая ветвьвoriginудаленный; Он предполагает, что на последнем существует ветвь, что и местная ветвь. Если этого не существует, вам нужно использовать-uвариант создания его.
Кроме того, по умолчанию предполагаетсяодинокийвверх по течению названoriginПолем Если вы хотите перенести текущую ветвь в другой вверх по течению, вам нужно явно указать ее:
git push other_upstream
Аналогично, по умолчанию предполагается, что выдвигает удаленную ветку с тем же именем. Чтобы подтолкнуть к другой ветви, мы также должны указать ее вместе с восходящим течением.
git checkout my_branch
git push other_upstream master
git rebase
По умолчаниюgit pushВарианты просты. По умолчанию дляgit rebaseНе причина, по которой мы, вероятно, используем один из них все время.
git -rebase - повторное поступление на вершину другого базового наконечника
-GIT документация
Давайте попробуемgit rebaseкомандовать на простом дереве:
A B C D
o---o---o---o master
\
E F G
o---o---o branch1 [HEAD]
Ничего не происходит. Или точнее, «это зависит» ™. Если мы не установилиoriginудаленный,gitжалуется.
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
Представьте себе следующее удаленное репо:
A B C D
o---o---o---o master
\
E F G H
o---o---o---o branch1 [HEAD]
Давайте настроим дистанционное управление и связываем локальную ветвь с удаленной ветвью.
git fetch
git branch --set-upstream-to=origin/branch1
Если мы позвонимrebaseОпять же, GIT пытается применить каждый коммит отудаленныйветвь, начиная с корневого. СHНе существует на местной ветви, это просто добавляет его к кончику.
Попробуем сmasterи снова проверить:
git rebase -i master
-iПозволяет перебазнуть интерактивно. Вот предложение.
pick 5529dc4 E
pick 93af602 F
pick 7f79811 G
pick c6f853b H
Согласно документации, команда переключилась на ветвь, получила коммиты отmaster, и теперь применяет коммиты в текущей ветви.
Результат - следующее:
A B C D
o---o---o---o master
\
E F G H
o---o---o---o branch1 [HEAD]
Гит - огромный зверь. Большинство разработчиков, включая меня, используют только часть своих функций. В этом посте мы описали дефолт двух наиболее распространенных команд GIT. Я надеюсь, что это проливает немного света на них.
Идти дальше:
- git-push
- git-rebase
- Многочисленные использование git rebase -onto
- Почему git refase без аргументов работает так, как он?
- Что означает команда «git rebase», когда не последовало аргументов?
Первоначально опубликовано вJava Geek27 июля 2025 года
Оригинал