Сделать сообщение о коммите Git отражением отредактированного комментария ревизии TFS

TL;DR

Как описано в этом посте, я изменил комментарий набора изменений TFS. Как я могу отразить это в соответствующем коммите Git в моем локальном репозитории Git, используя Git-Tfs?

Подробная версия

Я пользователь Git-Tfs. Мой рабочий процесс таков, что я пытаюсь зафиксировать очень небольшие приращения кода в моем локальном Git-репозитории ("что-то вроде одной строки - проверяет зеленый - делает коммит") и помещать его на сервер TFS, как только у меня появляется смысл (но, надеюсь, еще маленький) ревизия. Часто это происходит после одного коммита Git, но иногда после нескольких.

При проверке нескольких коммитов Git в TFS одновременно Git-Tfs объединяет сообщения коммитов Git в качестве комментария по умолчанию для регистрации TFS. Все идет нормально. Я обычно вмешиваюсь в них, чтобы сделать их более плавными, как один комментарий к ревизии. Но сегодня я забыл и зарегистрировал сообщение, которое было бы менее чем полезно для моих коллег, использующих TFS.

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

Что я пробовал

Я попытался это сделать, но сообщение о коммите осталось тем же, каким оно было до того, как я отредактировал комментарий ревизии:

git reset --hard HEAD~
git tfs pull

1 ответ

Решение

Как я могу отразить это в соответствующем коммите Git в моем локальном репозитории Git, используя Git-Tfs?

вы должны понимать, что из-за того, как git собирается, вы не можете изменять коммит. Каждый коммит git "запечатан" своим sha1.

Единственное, что вы можете сделать, это сбросить настройки TFS Remote. tfs/default в предыдущее состояние и снова получите набор изменений tfs. Я даже не понимаю, чего вы хотите добиться, переустанавливая свою местную ветку!?! Это всегда пульты, которые отражают коммиты удаленных репозиториев, а не локальных веток! git-tfs даже не заботится о вашем местном отделении. Единственное, что он ищет, - это последний извлеченный набор изменений в вашем удаленном tfs (на основе метаданных git-tfs-id: записанный в сообщении коммита выбранного набора).

Существует команда git-tfs reset-remote, чтобы сделать этот сброс легко (и безопасно) с помощью git-tfs начиная с v0.19:

git tfs reset-remote HEAD~ #reset the tfs remote to fetch it again
git reset --hard HEAD~ #reset also the local branch to override a git-tfs optimisation when re-fetching changesets
git tfs pull #fetch tfs changesets again

PS:

При проверке нескольких коммитов Git в TFS одновременно Git-Tfs объединяет сообщения коммитов Git в качестве комментария по умолчанию для регистрации TFS. Все идет нормально. Я обычно вмешиваюсь в них, чтобы сделать их более плавными, как один комментарий к ревизии.

Если вы хотите, чтобы git-tfs "зеркалировал" ваш коммит в TFS, возможно, вам следует подумать об использовании git tfs rcheckin команда...

Другие вопросы по тегам