Как мне удалить невыдвинутые коммиты git?

Текущий язык Spec: технически, порядок не указан.

Текущие браузеры: порядок сохраняется с большим исключением таких ключей, как «7», которые анализируются как целые числа и обрабатываются по-разному с помощью Chrome / V8.

Спецификация будущего языка (> ES2015): Как правило, вы можете ожидать, что упорядоченные сегодня вещи не будут неупорядочены. Новые API гарантируют заказ; существующие API трудно изменить. См. Ответ JMM для более подробной информации.

Лучшая ссылка ниже приведена в комментарии Tim Down:

http://code.google.com/p/v8/issues/ detail? id = 164

Эта ошибка подробно описывает проектные решения, связанные с реализацией ключевых заказов Chrome. Один вывод - это то, что для строковых ключей, которые не анализируют целое число (то есть «a» или «b», но не «3»), клавиши печатаются в порядке ввода во всех основных браузерах, и хотя это поведение не является «стандартизировано», оно IS считается существенной проблемой обратной совместимости поставщиками браузеров. Используйте на свой страх и риск.

По одному из (довольно упрямых) комментариев:

Стандарты всегда следуют за реализациями, вот откуда появился XHR, и Google делает то же самое путем внедрения Gears и последующего использования эквивалентной функциональности HTML5. Правильное решение состоит в том, чтобы ECMA формально включала де-факто стандартное поведение в следующий оборот спецификации.

blockquote>

Если вы полагаетесь на порядок вставки, вы находитесь за пределами спецификации ECMAScript, но внутри де-факто стандарт общего поведения браузера , если ваши ключи не анализируются как целые числа .

768
задан NullVoxPopuli 7 July 2010 в 17:47
поделиться

4 ответа

Удалите самую последнюю фиксацию, сохранив проделанную вами работу:

git reset --soft HEAD~1

Удалите самую последнюю фиксацию, уничтожив работу , которую вы сделали done:

git reset --hard HEAD~1
1582
ответ дан 22 November 2019 в 21:14
поделиться

Выполните git rebase -i FAR_ENOUGH_BACK и отбросьте строку для фиксации, которую вы не хотите.

11
ответ дан 22 November 2019 в 21:14
поделиться

Не удаляйте его: для одной фиксации достаточно git cherry-pick .

Но если у вас было несколько коммитов на неправильной ветке, то здесь светится git rebase --onto :

Предположим, у вас есть это:

 x--x--x--x <-- master
           \
            -y--y--m--m <- y branch, with commits which should have been on master

, тогда вы можно пометить master и переместить его туда, где вы хотели бы быть:

 git checkout master
 git branch tmp
 git checkout y
 git branch -f master

 x--x--x--x <-- tmp
           \
            -y--y--m--m <- y branch, master branch

, сбросить ветку y туда, где она должна была быть:

 git checkout y
 git reset --hard HEAD~2 # ~1 in your case, 
                         # or ~n, n = number of commits to cancel

 x--x--x--x <-- tmp
           \
            -y--y--m--m <- master branch
                ^
                |
                -- y branch

, и, наконец, переместить ваши коммиты (повторно применить их, сделав фактически новые коммиты)

 git rebase --onto tmp y master
 git branch -D tmp


 x--x--x--x--m'--m' <-- master
           \
            -y--y <- y branch
54
ответ дан 22 November 2019 в 21:14
поделиться

Если вы хотите переместить этот коммит в другую ветвь, получите SHA-код рассматриваемого коммита

git rev-parse HEAD

Затем переключите текущую ветвь

git checkout other-branch

И вишневый выбор фиксация в other-branch

git cherry-pick <sha-of-the-commit>
6
ответ дан 22 November 2019 в 21:14
поделиться
Другие вопросы по тегам:

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