Git: скрыть коммит сообщения на удаленном репо - PullRequest
3 голосов
/ 09 июня 2010

Когда я работаю с git на моей локальной машине, я обычно много работаю. Для этого я использую тематические ветки. Затем я объединяю такую ​​ветку с темой в ветку с названием Develop, которая будет отправлена ​​в удаленное хранилище.

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

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

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

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

Я не знаю, есть ли способ сделать это в git, но это было бы очень полезно для меня, поэтому я попробую спросить вас.

Ответы [ 3 ]

1 голос
/ 09 июня 2010

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

1 голос
/ 09 июня 2010

Из того, что вы описываете, похоже, что все, что вам нужно сделать, это нажать только вашу ветку devel, а не выдвинуть ветки вашей темы.

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

Как Даниэль Янковский упоминает в комментарии, git merge --squash работает, но "потерял линию изменений".
Вот почему вы можете установить 2 ветки '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 голосов
/ 09 июня 2010

Похоже, что вы можете использовать git rebase, чтобы переписать вашу локальную историю перед нажатием.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...