Понимание по умолчанию git push и rebase: практическое руководство

Понимание по умолчанию 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 года


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE