Сделать сообщение фиксации Git отражающим отредактированный комментарий набора изменений TFS

TL;DR

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

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

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

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

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

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

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

git reset --hard HEAD~
git tfs pull

person Keith Pinson    schedule 30.01.2014    source источник


Ответы (1)


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

вы должны понимать, что из-за того, как построен git, вы НЕ МОЖЕТЕ изменить коммит. Каждый коммит git «запечатан» своим sha1.

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

Существует команда git-tfs reset- remote, чтобы сделать этот сброс легко (и безопасно) с помощью git-tfs, начиная с версии 0.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...

person Philippe    schedule 31.01.2014
comment
Откровенно говоря, вопрос скорее из любопытства, чем полезности. Спасибо за ответ---очень информативно! - person Keith Pinson; 31.01.2014