Так, схоже на форумі відповіді не дочекався б
Гаразд, розкажу, що сталося, чому так сталося й чому так краще не робити.
А, якщо хтось попаде в таку ж халепу, то буде міні гайд, як це виправити.
Отже, коміти-копії появилися в нас у наслідок git rebase. Ідея rebase полягає в тому, щоби перебазувати дані для вашої гілки, але лише якщо ви ще не пушили нічого, щоби відтворити ваші локальні коміти. Як тільки ви пушнули (і працюєте в команді), вам не треба перебазовувати (rebase) гілку поверх майстра, оскільки вона переписує свій SHA1, змушуючи вас примусово пушити новий стан гілки (git push -f). Відповідно, якщо ви цього не знаєте, то роблячи git rebase для пушнутої гілки, перетворить її у стан diverged, після чого git запропонує зробити спочатку git pull, а потім git push замість force push, чого робити категорично не можна. В таких випадках бажано зробити git merge master у вашу гілку.
І от, якщо ви послухались поради git'a та зробили pull + push, то отримаєте такі от небажані коміти-копії. Як це можна виправити? Ймовірно, це можна зробити по-різному, але я робив так:
0. Переконайтесь, що знаходитесь на потрібній гілці, інакше зробіть $ git checkout <потрібна гілка>
1. Робимо $ git reset -hard <на коміт перед тим, як ви робили rebase>
2. Робимо $ git merge master у вашу гілку (не навпаки)
3. Чері-пікаємо необхідні коміти, які ні в чому не винні та мають залишитися $ git cherry-pick <коміт>
4. Ну і наостанок, робимо $ git push -f