2016-10-06 3 views
0

Пытались принятый ответ на этой странице здесь: How to merge the current branch into another branchКак скопировать текущее состояние ведущей ветки в другую ветвь?

Но проблема в том, хозяин не имеет каких-либо изменений, необходимых, и я создал ветку с: git checkout -b mybranch

Когда я пытаюсь git push self mybranch:master

Это говорит мне, что все актуально. Но я это знаю. Я просто хочу скопировать ветку в другую, чтобы она имела текущее состояние ведущей ветки. И это никогда больше не коснется.

Я буду только отделяться от ветви мастера в будущем. Эта другая ветвь никогда не будет затронута. Но мне нужно архивировать его так, чтобы в случае необходимости я мог переключиться на эту ветвь и вернуть ее каждый раз ...

Как скопировать главную ветку без создания нового репо?

ответ

1

Как указано в answer by Zoli Szabo, вы должны использовать tags, чтобы отмечать события в истории, которые никогда не должны перемещаться. Чтобы создать тег, просто укажите его имя и фиксацию, на которую он должен указать. Если вы укажете имя ветки вместо хэша commit, тег будет указывать на текущую фиксацию вершины этой ветви.

git tag mytag branch 
git tag mytag 123ab45ef 

Но чтобы ответить на ваш вопрос, если вы хотите, чтобы ваша отрасль, чтобы отразить текущее состояние мастера, у вас есть несколько вариантов:

  • Force обновляя ветвь: git branch -f mybranch master, затем толкая ветвь
  • Нажатие состояния, которое требуется ветке в удаленном репозитории: git push origin master:mybranch (-f, если вам требуется обновление силы). Осторожно, так как это может вызвать проблемы у других людей.
  • Слияние ветки с помощью стратегии ours (-s ours) для создания нового фиксации с требуемым состоянием. Затем нажмите на удаленный репозиторий.

Если вы просто хотите обновить свой локальный репозиторий, слейте ветви (должно привести к быстрой перемотке вперед, если я правильно понял ваш вопрос) или сделать локальный толчок.

  • Объединить: git checkout master; git merge mybranch
  • Местное нажатие: git push . mybranch:master

Толчок это своего рода обратной быстрой перемотки вперед слияния (целевые и целевой ветви включен).

Сделайте свой выбор :)

+0

'git branch -f original: master' это дает мне недействительную ветку' original: master', но исходная ветка существует. 'git branch -a' показывает оригинал там. –

+0

@SolomonClosson: извините, эта двоеточие не должно было быть там. Это должно было быть космическим персонажем. – knittl

+0

Спасибо, я просто использовал тег, надеюсь, что сделает то, что хочу. –

1

Для обозначения определенных точек в истории, вы должны использовать tags, а не «забывших» ветви.

+0

согласен. Тег выражает лучшее, что цепочка фиксации не находится в активной разработке. – Gregg

0

У вас не может быть двух главных ветвей, указывающих на разные фиксации. Филиал указывает только на одно сообщение. Чтобы сохранить место, где была главная ветвь, создайте на нем тег или создайте новую ветку. Вы можете сохранить одну ветку под именем MYSUBDIR/master и другую под именем MYOTHERSUB/master.

создать ветку «MySave/master» на удаленном «я», совет которого совпадает с вашим местным mybranch.

git push self mybranch:MySave/master 

Предполагая, что у вас есть соответствующие разрешения, конечно. Вы можете видеть состояние обеих ветвей с:

git log --oneline --decorate -9 mybranch self/MySave/master 

в «Я/MySave/мастер» является вашей удаленной копии отслеживания, чтобы получить самые последние делают это:

git fetch self self/MySave/master 

, какой себя обновления»/MySave/master '(но не ваш местный «mybranch», для этого используйте pull)

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