Отмена мерзавца

Как хэдз-ап, это в основном работает, за исключением случаев, когда совпадение не найдено, или если у вас есть NaNs в любом столбце. Вместо прямого применения get_close_matches мне было проще применить следующую функцию. Выбор заменителей NaN будет сильно зависеть от вашего набора данных.

def fuzzy_match(a, b):
    left = '1' if pd.isnull(a) else a
    right = b.fillna('2')
    out = difflib.get_close_matches(left, right)
    return out[0] if out else np.NaN
2849
задан webmat 21 July 2014 в 23:43
поделиться

6 ответов

Самый легкий путь состоял бы в том, чтобы найти главную фиксацию ответвления, как это сразу было перед переосновой, запущенной в эти , повторно порют ...

git reflog

и сбрасывать текущее ответвление к нему (с обычными протестами о том, чтобы быть абсолютно уверенным прежде, чем сбросить с --hard опция).

предположим старая фиксация была HEAD@{5} в касательно журнала:

git reset --hard HEAD@{5}

В Windows, Вы, возможно, должны заключить ссылку в кавычки:

git reset --hard "HEAD@{5}"

можно проверить историю кандидата старая голова, просто делая git log HEAD@{5} ( Windows: git log "HEAD@{5}").

, Если Вы не отключили на ответвление, повторно порет Вас, должен быть в состоянии просто сделать git reflog branchname@{1}, поскольку переоснова отсоединяет главу филиала прежде, чем повторно прикрепить к заключительной голове. Я проверил бы это дважды, хотя, поскольку я недавно не проверил это.

На значение по умолчанию, все повторно порет, активируются для непустых репозиториев:

[core]
    logAllRefUpdates = true
3905
ответ дан Cristian Ciupitu 21 July 2014 в 23:43
поделиться

Сброс ответвления к повисшему объекту фиксации ее старой подсказки является, конечно, лучшим решением, потому что это восстанавливает предыдущее состояние, не расходуя усилия. Но если Вы, оказывается, потеряли те фиксации (f.ex., потому что Вы собрали "мусор" свой репозиторий тем временем, или это - новый клон), можно всегда повторно основывать ответвление снова. Ключ к этому эти --onto переключатель.

Let’s говорят, что у Вас было ответвление темы, образно названное topic, что Вы отклонились master, когда подсказка master была эти 0deadbeef фиксация. В какой-то момент, в то время как на эти topic ответвление, Вы сделали git rebase master. Теперь Вы хотите отменить это. Here’s, как:

git rebase --onto 0deadbeef master topic

Это возьмет все фиксации на topic, что aren’t на master и воспроизводят их сверху [1 110].

С [1 111], можно перестроить историю в в значительной степени любая форма безотносительно .

Весело проводят время.:-)

84
ответ дан Aristotle Pagaltzis 21 July 2014 в 23:43
поделиться

Для нескольких фиксаций помните что любые ссылки фиксации все продвижение истории до той фиксации. Таким образом в ответе Charles, считайте "старую фиксацию" как "новейшая из старых фиксаций". Если Вы сбросите к той фиксации, то все продвижение истории до той фиксации вновь появится. Это должно сделать то, что Вы хотите.

15
ответ дан Greg Hewgill 21 July 2014 в 23:43
поделиться

На самом деле переоснова сохраняет Вашу начальную точку ORIG_HEAD таким образом, это обычно столь же просто как:

git reset --hard ORIG_HEAD

Однако reset, rebase и merge все сохраняют Ваш оригинал HEAD указатель в ORIG_HEAD таким образом при выполнении какой-либо из тех команд начиная с переосновы, Вы пытаетесь отменить затем, необходимо будет использовать повторно пороть.

1420
ответ дан 22 November 2019 в 19:47
поделиться

Я на самом деле помещаю тег резервного копирования в ветку перед тем, как выполнять какую-либо нетривиальную операцию (большинство перестановок тривиальны, но я бы сделал это, если это покажется сложным).

Затем, восстановление так же просто, как git reset --hard BACKUP .

69
ответ дан 22 November 2019 в 19:47
поделиться

Ответ Чарльза работает, но вы можете сделать следующее:

git rebase --abort

для очистки после сброса .

В противном случае вы можете получить сообщение « Интерактивное перебазирование уже началось ».

363
ответ дан 22 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

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