Итак, при переустановке вы можете редактировать как фиксацию, где вы добавили файл по ошибке, так и тот, который вы хотите добавить в этот порядок. Если файл находится в последнем коммите, но должен быть в более раннем, вам придется изменить порядок строк. Например, я начинаю с
pick 8de731b Commit with missing file.
pick bbef925 Commit with too many files.
pick 52490ce More history.
мне нужно изменить его
edit bbef925 Commit with too many files.
edit 8de731b Commit with missing file.
pick 52490ce More history.
Затем
# In the commit containing an extra file
git reset HEAD^ badfile.c
git commit --amend
git rebase --continue
# Now in the commit to add it to
git add badfile.c
git commit --amend
git rebase --continue
К сожалению, при редактировании истории в одной отрасли, я не знаю любым способом избежать редактирования истории во всех филиалах. Переустановка должна выполняться как можно раньше, чтобы избежать подобных проблем. В моем простом случае здесь, я могу объединить хозяин и другую ветвь, но коммиты не сливаются, то я должен перебазироваться в мастере, а также порядка и сквоша коммитов, как это:
pick 7cd915f Commit with missing file.
fixup 8de731b Commit with missing file. #This was the higher of the two entries
pick 8b92c5a Commit with too many files.
fixup bbef925 Commit with too many files. #This was the higher of the two entries
pick 94c3f7f More history.
fixup 52490ce More history. #This was the higher of the two entries
Late edit: Я только что заметил, что я случайно переупорядочил историю фиксации как перенос из моего первоначального ответа. Перестановка строк в rebase изменяет порядок, который вы совершаете; после редактирования вы можете снова переустановить и поменять их обратно, чтобы вернуться к первоначальному порядку фиксации.
Имейте в виду, что изменение любой прошлой передачи перезаписывает историю, и вы получаете совершенно новые хэши с момента совершения.Не делайте этого, если коммит уже опубликован. – aragaer
@aragaer Я намеренно предусмотрел, что переписываю историю _LOCAL_. – Val