Миграция с TFS на Git с помощью git-tfs: как полностью отключить Git от TFS после миграции?

Я успешно клонировал репозиторий TFS, но git log по-прежнему показывает HEAD, указывающий как на master, так и на tfs/default следующим образом:

(HEAD -> master, tfs/default)

Я уже пробовал команду filter-branch, а так же удалить разделы [tfs], [git-tfs] из configfile и выполнить следующие команды:

git reflog expire --all
git gc --aggressive --prune
git tfs cleanup
git tfs cleanup-workspace

Но это все еще там. Единственное, что работает, это удалить папку .git, а затем запустить git init, но, конечно, при этом вся история теряется. Я также проверил git config --list --show-all, но там нет удаленного репозитория TFS.

Вопрос
Можно ли полностью отключить TFS от репозитория git без потери истории после использования git-tfs, и если да, то как?


EDIT
Принятый ответ работает и поучителен, но см. этот ответ на SuperUser для того, что Я понимаю, что это «более безопасный» способ сделать это.


person evilmandarine    schedule 11.03.2021    source источник
comment
Нет такой вещи, как репозиторий TFS. Вы про ТФВ?   -  person Daniel Mann    schedule 13.03.2021


Ответы (1)


Можно ли полностью отключить TFS от репозитория git без потери истории после использования git-tfs

Ваш репозиторий git не подключен к серверу TFS. Он просто содержит некоторые данные, которые позволяют git-tfs взаимодействовать с системой управления версиями TFVC.

То, что вы видите, tfs/default — это псевдоудаленная ветка git для отслеживания последнего полученного набора изменений.

и если да, то как?

Поскольку он хранится как удаленный git, проще удалить файл:

.git/refs/remotes/tfs/default

Примечание: если вы не можете найти этот файл, это связано с тем, что есть вероятность, что реф запакован в файл .git/packed-refs. Если есть, удалите строку, соответствующую refs/remotes/tfs/default

person Philippe    schedule 11.03.2021
comment
Он в упакованных рефах, но там 5 строк: refs/heads/master, refs/notes/commits, refs/original/refs/heads/master, refs/original/refs/remotes/tfs/default, refs/remotes/tfs/default. Не могли бы вы указать в ответе, какие из них я должен удалить, не сломав что-то? - person evilmandarine; 12.03.2021
comment
@evilmandarine Ответ на ваш вопрос уже есть в моем предыдущем ответе. Вы должны удалить refs/remotes/tfs/default. Остальные refs/original/* были созданы, когда вы сделали «ветвь фильтра» или что-то подобное, и, по всей вероятности, также могли быть удалены. Но это легко проверить для вас. Сделайте резервную копию файла и удалите части, чтобы попробовать. Посмотрите на эффект, и если он вас устраивает, ничего страшного, в противном случае отмените изменения. Так мы всему учимся... - person Philippe; 12.03.2021
comment
@evilmandarine см. мой предыдущий комментарий (я забыл упомянуть вас, поэтому вы, вероятно, не получили уведомление) - person Philippe; 12.03.2021
comment
Ваш ответ работает, спасибо. Мне просто нравится понимать, что я делаю, а не просто пытаться и смотреть, работает ли это. В поисках упакованных ссылок я нашел этот ответ на SuperUser и в итоге сделал git show-ref default, затем git update-ref -d refs/original/refs/remotes/tfs/default и git update-ref -d refs/remotes/tfs/default. - person evilmandarine; 12.03.2021