Я предполагаю, что название ветки, в которой вы сейчас находитесь, 'master'
- Скопируйте a.out в папку вне git repo
git checkout -b new-branch COMMIT2
- Добавьте a.out к вашему .gitignore, затем запустите
git rm a.out
.Зафиксируйте эти изменения git checkout master
git rebase new-branch -i
Это должно привести к нескольким конфликтам перебазирования, потому что коммиты, которые вы перебазируете (от мастера), содержатa.out, в то время как ветвь, на которую вы перебазируете (новая ветвь), сделала a.out неотслеживаемым файлом
В каждом конфликте, в котором упоминается a.out, выполните git rm a.out
, затем git rebase --continue
для продолженияс rebase
В конце этого процесса вы можете безопасно удалить new-branch с помощью git branch -d new-branch
и скопировать a.out снаружи git-репо обратно.