Ответ 1
Ответом были файлы в .git/refs/original
, и как команда, которую я нашел, не должна была заканчиваться в HEAD
, а вместо этого с --tag-name-filter cat -- --all
.
Приветствует _Vi и был хостом из канала #git
для справки.
Я случайно создал коммит "неизвестно" в моем репозитории и решил попробовать запустить команду здесь:
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "unknown" ];
then
GIT_COMMITTER_NAME="..";
GIT_AUTHOR_NAME="..";
GIT_COMMITTER_EMAIL="...";
GIT_AUTHOR_EMAIL="...";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD
Сначала я подумал, что все в порядке, пока я не заметил в gitk, что каждая фиксация до запуска этого была дублирована, а не просто отредактирована, как я думал изначально.
Можно ли очистить это?
РЕДАКТИРОВАТЬ: ОК, gitk показывает как старые коммиты (те, у которых "неизвестные" участники смешиваются), так и новые коммиты (переписанные), разделенные в определенной точке вокруг наполовину. Подумайте, куча коммитов, затем дублируется (и с редактированием) и складывается поверх оригинальных. Я хочу, если это возможно, удалить исходные.
Ответом были файлы в .git/refs/original
, и как команда, которую я нашел, не должна была заканчиваться в HEAD
, а вместо этого с --tag-name-filter cat -- --all
.
Приветствует _Vi и был хостом из канала #git
для справки.
Если вы знаете последнюю хорошую фиксацию, сохраните свой бекон с этим:
git reset <last_good_commit> # Warp back to a good state.
git push -f master # Push the changes up (you need -f to force it to
# obliterate old commits).
Если вы хотите более осторожно пройтись (например, если есть хорошие и плохие коммиты после <last_good_commit>
), используйте git rebase -i
для вишни - выберите хорошие, которые должны остаться.