Сообщение об автоматической фиксации слияния Git

#git

#git

Вопрос:

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

Я сделал это, выполнив это:

 git subtree split -P some-sub-directory-in-my-large-repo/ -b branch-name-I-split
  

Очевидно, я пытаюсь написать сценарий, но я не могу пройти мимо этого:

 cd my-smaller-repo
git pull /path-to-large-repo/ branch-name-I-split
  

И это, конечно, приводит меня к редактору.

Мне нужно просто принять сообщение по умолчанию и двигаться дальше…

Есть идеи?

Комментарии:

1. Насколько оно меньше?

2. Обновленный вопрос

Ответ №1:

Для этого можно использовать флаг —no-edit .

Из документов git

 --edit
-e
--no-edit
Invoke an editor before committing successful mechanical merge to further 
edit the auto-generated merge message, so that the user can explain and 
justify the merge. The --no-edit option can be used to accept the auto- 
generated message (this is generally discouraged). The --edit (or -e) 
option is still useful if you are giving a draft message with the -m 
option from the command line and want to edit it in the editor.

Older scripts may depend on the historical behaviour of not allowing the 
user to edit the merge log message. They will see an editor opened when 
they run git merge. To make it easier to adjust such scripts to the 
updated behaviour, the environment variable GIT_MERGE_AUTOEDIT can be set 
to no at the beginning of them.
  

Ответ №2:

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

  • если это nano, вы можете выйти из него с помощью ctrl-x
  • если это vim, вы можете выйти из него с помощью :q
  • если это emacs, вы можете выйти из него с помощью ctrl-x ctrl-c
  • в противном случае это будет зависеть от редактора, скриншот поможет нам узнать, какой он.

Если вы не хотите, чтобы редактор создавался, вы можете использовать git merge вместо git pull :

 git fetch remote-name
git merge remote-name/branch-name -m "Merge message"
  

Комментарии:

1. Правильно, но как мне это сделать из командной строки? Как и в случае с фиксацией -m, но это не работает с извлечением

2. Я обновился, чтобы иметь возможность объединять и устанавливать сообщение без создания редактора.

3. Итак, что именно такое «remote-name» — означает ли это, что мои меньшие ветви должны быть привязаны к удаленному репозиторию? (сейчас оно только локальное)

4. remote-name является вашим /path-to-large-repo/ . Я только что прочитал документ и увидел, что git pull он принимает пути и URL-адреса в качестве первого аргумента

5. Итак, выборка git работает, а слияние — нет. Я получаю «merge: /path-to-large-repo/branch-name — не то, что мы можем объединить