После того, как я сыграл с пультом, я закончил с удвоением всех моих коммитов. Например. вместоGit удалить повторяющиеся коммиты
C3107
..
C3
C2
C1
Я получил
C3107
C3107
..
C3
C3
C2
C2
C1
C1
где удвоенные фиксации имеют одинаковые имена, но разные хэш. Проблема в том, что я заметил, что это слишком поздно, и я не добавил на нее хорошую кучу коммитов.
Есть ли способ удалить повторяющиеся коммиты и не потерять те, что я добавил?
P.S .: Если это поможет, у меня есть копия репозитория перед моими экспериментами с пультом.
Большое спасибо.
ОБНОВЛЕНИЕ Как многие из вас спросили, как это получилось: у меня есть репо R1, тогда я создал еще один R2. В моей локальной копии, которая была в курсе R1, я изменил происхождение на R2 и попытался нажать, но некоторые большие файлы были отклонены github. Так что я сделал git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename'
, который сделал git думаю, что репозитории разные. Затем я подтолкнул всех к R2, сделав некоторые коммиты, и решил снова вернуться к R1, изменив исходное положение и нажав. Затем я добавил еще несколько коммитов в R1.
По умолчанию Git не позволяет по-настоящему дублировать фиксации, т. Е. Совершает одно и то же дерево и предыдущее. Пропустили ли вы '-allow-empty'' git commit'? –
Обновлен мой вопрос с подробностями о том, как я напортачил свое репо. –
У меня такая же проблема. Я подозреваю, что это было вызвано автоматическим слиянием.Я использую следующие команды для его решения (избавьтесь от фиксации слияния и сохраните коммиты до и после него, но Committer и Commit Date будут обновлены из-за создания новых коммитов): 'git checkout -b tmpBranchBeforeErrorMerge oldHashBeforeErrorMerge; git rebase --onto tmpBranchBeforeErrorMerge oldHashBeforeErrorMerge headLastestHash; git branch -b new_master; git branch -d master; git branch -D tmpBranchBeforeErrorMerge; git branch -m new_master master; git push -v -set-upstream origin master: master -f' – samm