2010-06-09 2 views
2

Я не знаю, как довести свою проблему на точке, так что я пытаюсь объяснить это немного ;-)Git: скрыть сообщения фиксации на удаленном репозитории

При работе с мерзавцем на моей локальной магнитофонной пленке я обычно совершаю много. Для этого я использую ветви темы. Затем я объединяю такую ​​ветвь темы в ветку под названием develop, которая будет перенаправлена ​​на удаленное репо.

Я всегда сливаюсь с --no-ff, поэтому они всегда являются фиксацией для всей моей темы.

Теперь я хотел бы только нажать эту фиксацию с указанным описанием, что я сделал в целом в этой ветке.

Я бы предпочел это, потому что вы можете посмотреть историю фиксации на сервере и посмотреть, что происходит, и не нужно читать каждую фиксацию.

И для моей местной работы у меня была бы полная история, если я хочу сбросить свою ветку или что-то подобное.

Я не знаю, если их способ сделать это в мерзавец, но это было бы очень полезно для меня, так что я дам ему попробовать спросить вас ;-)

С наилучшими пожеланиями, Себастьян

ответ

1

Из того, что вы описываете, похоже, что все, что вам нужно сделать, - это нажать только свою ветку развития, а не нажимать на свои ветви тем.

  • Ваш devel ветвь будет содержать эту фиксацию (созданную при слиянии с ветвью темы), в которой суммируются все, что было сделано.
    Эта фиксация будет нажата на пульте дистанционного управления.
    Фокус в том, что он не должен быть связан с вашей веткой темы (или ее история также опубликована).
    a git merge --squash было бы полезно подготовить это одиночное сообщение.
  • Ваши topic ветви остаются неопубликованными (не толкаемыми) и содержат всю подробную историю.
    Вы можете принудительно выполнить это, например, с помощью hook on the remote side, чтобы отказаться от любой ветки, которую вы не хотите нажимать на свое (удаленное) репо.

Как Daniel Yankowsky упоминает в комментариях, через git merge --squash работает, но "потеряли изменения родословной".
Вот почему вы можете настроить ветви 'devel'.

 t--t--t--t (topic) 
    /
x--x (devel) 
\ 
    p--p (devel_pub) 
  • один для объединения целей (классический 'devel' филиал)
  • один для публикации цели ('devel_pub'), где вы выполняете merge --squash)
 
        (topic) 
        | 
    x--x--t--t--t--t--d (devel) 
    \ 
     p--p--T (devel_pub, with T being "git merge --squash topic") 
+0

Не все ли перетаскивают родительские коммиты? Таким образом, нажатие фиксации слияния также приведет к обеим сторонам слияния? –

+0

Но при использовании: $ git checkout develop $ git merge --no-ff topic У меня есть полная история, у меня есть тема. –

+0

@ Daniel: хороший пункт. Я внесла поправки в свой ответ, чтобы не связывать историю развития с разделяемой веткой темы. – VonC

1

I не знаю, как сделать то, что вы описываете, и я подозреваю, что он работает против дизайна git. Похоже, вы хотите обобщить целый набор коммитов. Что, если вы слились с опцией -no-commit и отредактировали сообщение слияния, чтобы суммировать изменения вашей ветки?

0

Похоже, вы можете использовать git rebase для перезаписи своей местной истории перед тем, как нажимать.

Почему бы вам не хотеть это на удаленной стороне, так или иначе? Кажется, это не имеет большого значения. Просто установите удаленный конец, чтобы показать только одну ветвь, в которой выполнено слияние.

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