Если по какой-то причине вам не нравятся интерактивные редакторы, вы можете использовать git rebase --onto
.
Предположим, вы хотите изменить Commit1
. Прежде всего, отделитесь от до Commit1
:
git checkout -b amending [commit before Commit1]
Во-вторых, возьмите Commit1
с cherry-pick
:
git cherry-pick Commit1
Теперь измените ваши изменения, создавая Commit1'
:
git add ...
git commit --amend -m "new message for Commit1"
И, наконец, после того, как вы спрятали какие-либо другие изменения, пересаживайте остальную часть своих коммитов до master
поверх вашей новой фиксации:
git rebase --onto amending Commit1 master
Читайте: «rebase, на ветку amending
, все фиксируются между Commit1
(не включительно) и master
(включительно)». То есть Commit2 и Commit3 полностью разрезают старый Commit1. Вы можете просто выбрать вишню, но это проще.
Не забудьте очистить свои ветви!
git branch -d amending
Простой способ - вычислить шаг и проверить, не растоптали ли вы пустое пространство. Если это не согласуется с дизайном вашего механизма синхронизации, то посмотрите на следующее место, как вы бы сделали шаг:
def peek_next(self):
return (self.rect.x + self.change_x,
self.rect.y + self.change_y)
...
player_next_x, player_next_y = player.peek_next()
if (screen.get_at((player_next_x, player_next_y)) != BACKGROUND_COLOUR):
# player hit tail
Или введите новую позицию непосредственно в get_at
: [ 114]
if screen.get_at(player.peek_next()) != BACKGROUND_COLOUR:
# player bit own tail; dies of poisoning