2014-09-30 5 views
9

для нажатия на битбакет.Разница между именем origin/branch_name и branch_name?

Если да, то: git push origin origin/branch_name Мои коммиты не толкаются.

Total 0 (delta 0), reused 0 (delta 0) 

Если я git push origin branch_name мои фиксаций выталкиваются:

Counting objects: 160, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (13/13), done. 
Writing objects: 100% (20/20), 2.10 KiB | 0 bytes/s, done. 
Total 20 (delta 6), reused 0 (delta 0) 

так что происхождение/среднее перед branch_name? И почему это имеет значение?

ответ

15

Вы должны помнить, что существуют различные типы ветвей:

  • (чисто) местные ветви, т.е. ветви вы фиксируете,
  • Отделы, которые живут в удаленном репозитории, из-за отсутствия лучшего термина. Возможно, вы знаете удаленный репозиторий под удаленным именем, например origin. Однако с точки зрения хранилища такая ветка местная. Добро пожаловать в Управление распределенной версией! :)
  • Удаленное отслеживание отраслей. Также просто называется удаленных ветвей, как в Pro Git book, но я нахожу эту фразу путаной; дистанционный следящий ответвление более точный. Это специальные местные филиалы, единственной целью которых является отражение состояния ветвей , которые живут в удаленном репозитории во время вашего последнего общения с сервером. В частности, вы не можете связываться с ветвями этого типа.

Здесь branch_name является локальной ветви, тогда как origin/branch_name является дистанционным отслеживанием ветви; он отражает состояние соответствующей ветки , которая живет в origin.

Сразу после запуска

git fetch 

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

git push origin origin/branch_name 

ничего не толкать: вы, по сути пытается подтолкнуть материал, который уже присутствует в родословной соответствующего ветви, которые живут в origin.

Однако, если ваш местного филиал, branch_name, впереди один или несколько фиксаций,

enter image description here

затем запустить

git push origin branch_name 

подтолкнут фиксации, содержащиеся в branch_name, но не в блоке , которые живут в origin:

enter image description here

0

происхождение, Что хранится удаленно на GitHub

без происхождения, что хранится локально на вашем компьютере

при фиксации 1-го вы совершить локально на компьютер

когда вы толкаете происхождения имя ветви вы выдвигаете на GitHub

+2

Куда входит github в эту игру? 'git' позволяет использовать многие удаленные серверы, а github - лишь один из них. –

0
  • origin/branch_name является отделение на удаленной машине
  • только branch_name является филиалом на локальной машине
2

с помощью программы просмотра графического дерева (как gitk --all) покажет вам, что origin/mybranch и mybranch могут отличаться.

origin это просто название по умолчанию для клонировали дистанционного, который (в вашем случае) содержит ветвь mybranch (так же, как локальный репозиторий)

так, когда вы просите, чтобы подтолкнуть origin/mybranch к origin, вы синхронизируете пульт origin с собой, поэтому он ничего не делает (к счастью удаленный всегда находится в синхронизации с самим собой).

имя origin является произвольным, и при клонировании может быть установлен флаг --origin при клонировании.

Смежные вопросы