Как исправить фиксацию в неправильной ветке Git?

Да и Нет.

В простейшем случае нормально пропускать «return None», потому что он возвращает None только в одном отрицательном состоянии.

Но если есть оценка вложенных условий и несколько сценариев, в которых функция может вернуть None. Я хотел бы включить их в качестве визуальной документации сценариев.

[Редактирование: на основе комментария ниже]

return or return None

Я предпочитаю «возвращать None», чтобы обнажить «возврат», поскольку он явный, и позже никто не будет сомневаться в том, что возвращение означает возвращение None или было ошибкой, поскольку что-то не было.

559
задан mikewilliamson 18 July 2014 в 07:12
поделиться

3 ответа

Если вы еще не отправили свои изменения, вы также можете выполнить мягкий сброс:

git reset --soft HEAD^

Это отменит фиксацию, но вернет зафиксированные изменения обратно в ваш индекс. Предполагая, что ветки относительно актуальны по отношению друг к другу, git позволит вам выполнить проверку в другой ветке, после чего вы можете просто выполнить фиксацию:

git checkout branch
git commit

Недостатком является то, что вам нужно повторно ввести сообщение фиксации .

896
ответ дан 22 November 2019 в 22:07
поделиться

Если у вас есть чистая (не модифицированная) рабочая копия

Чтобы откатить один коммит (убедитесь, что вы записали хэш коммита для следующего шага):

git reset --hard HEAD^

Чтобы перенести этот коммит в другую ветку:

git checkout other-branch
git cherry-pick COMMIT-HASH

Если у вас есть изменённые или неотслеживаемые изменения

Также обратите внимание, что git reset --hard убьёт все неотслеживаемые и изменённые изменения, которые у вас могут быть, так что если у вас есть такие изменения, вы можете предпочесть:

git reset HEAD^
git checkout .
109
ответ дан 22 November 2019 в 22:07
поделиться

Если вы уже отправили свои изменения, вам нужно будет принудительно выполнить следующее нажатие после сброса HEAD.

git reset --hard HEAD^
git merge COMMIT_SHA1
git push --force

Предупреждение: полный сброс отменит все незафиксированные изменения в вашей рабочей копии, а принудительное нажатие полностью перезапишет состояние удаленной ветви текущим состоянием локальной ветви.

На всякий случай, в Windows (с использованием командной строки Windows, а не Bash) на самом деле четыре ^^^^ вместо одного, так что это

git reset --hard HEAD^^^^
20
ответ дан 22 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: