Я работал с другом в проекте, и он редактировал кучу файлов, которые не должны были редактироваться. Каким-то образом я объединил свою работу в мою, либо когда я ее потянул, либо когда я попытался просто выбрать конкретные файлы, которые я хотел. Я долго искал и играю, пытаясь понять, как удалить коммиты, содержащие изменения в этих файлах, кажется, что они перебрасываются между revert и rebase, и нет простых примеров, и docs полагаю, что знаю больше, чем я.
Итак, вот упрощенная версия вопроса:
Учитывая следующий сценарий, как удалить commit 2?
$ mkdir git_revert_test && cd git_revert_test
$ git init
Initialized empty Git repository in /Users/josh/deleteme/git_revert_test/.git/
$ echo "line 1" > myfile
$ git add -A
$ git commit -m "commit 1"
[master (root-commit) 8230fa3] commit 1
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 myfile
$ echo "line 2" >> myfile
$ git commit -am "commit 2"
[master 342f9bb] commit 2
1 files changed, 1 insertions(+), 0 deletions(-)
$ echo "line 3" >> myfile
$ git commit -am "commit 3"
[master 1bcb872] commit 3
1 files changed, 1 insertions(+), 0 deletions(-)
Ожидаемый результат
$ cat myfile
line 1
line 3
Вот пример того, как я пытался вернуть
$ git revert 342f9bb
Automatic revert failed. After resolving the conflicts,
mark the corrected paths with 'git add <paths>' or 'git rm <paths>'
and commit the result.