Подтвердить что ты не робот

Что такое `git push origin master`? Справка с git refs, head и remotes

У меня вопрос о том, что делает git push origin master:

  • Я знаю, что origin является удаленным (aka GitHub)
  • git push origin master совпадает с git push origin master_on_my_machine:master_on_github

Я не знаю, если:

  • master_on_my_machine равно /refs/heads/master
  • master_of_github равен /refs/remotes/origin/master

Если он равен, возможно ли это сделать git push origin refs/heads/master:refs/heads/origin/master?

Наконец, я хочу сделать только тип git push и git pull, когда:

  • Я на ведущей ветке
  • Я хочу нажать и вытащить из ветки my_test на github, только набрав git push и git pull.
4b9b3361

Ответ 1

Git имеет два типа ветвей: local и remote. Чтобы использовать git pull и git push по своему усмотрению, вы должны сообщить своему локальному ветки (my_test), на котором удаленная ветка отслеживает его. В типичном режиме Git это можно сделать как в файле конфигурации, так и с помощью команд.

Команды

Убедитесь, что вы находитесь на ветке master с

1) git checkout master

затем создайте новую ветку с помощью

2) git branch --track my_test origin/my_test

и проверьте его с помощью

3) git checkout my_test.

Вы можете затем push и pull без указания локального и удаленного.

Однако, если вы уже создали ветку, вы можете использовать переключатель -u, чтобы сообщить Git push и pull, что вы хотите использовать указанные локальные и удаленные ветки с этого момента, например так:

git pull -u my_test origin/my_test
git push -u my_test origin/my_test

Config

Команды настройки отслеживания удаленных веток довольно прямолинейны, но я перечисляю способ конфигурации, а также мне легче, если я создаю кучу ветвей отслеживания. Используя ваш любимый редактор, откройте проект .git/config и добавьте нижеследующее.

[remote "origin"]
    url = [email protected]:username/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "my_test"]
    remote = origin
    merge = refs/heads/my_test

Указывает удаленный вызов origin, в данном случае один стиль GitHub, а затем сообщает ветке my_test использовать ее как удаленную.

Вы можете найти что-то очень похожее на это в конфиге после выполнения приведенных выше команд.

Некоторые полезные ресурсы:

Ответ 2

Или как одна команда:

git push -u origin master:my_test

Выталкивает коммиты из локальной ветки хозяина в (возможно новую) удаленную ветвь my_test и настраивает master для отслеживания origin/my_test.