Как хэдз-ап, это в основном работает, за исключением случаев, когда совпадение не найдено, или если у вас есть 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
Самый легкий путь состоял бы в том, чтобы найти главную фиксацию ответвления, как это сразу было перед переосновой, запущенной в эти , повторно порют ...
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
Сброс ответвления к повисшему объекту фиксации ее старой подсказки является, конечно, лучшим решением, потому что это восстанавливает предыдущее состояние, не расходуя усилия. Но если Вы, оказывается, потеряли те фиксации (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], можно перестроить историю в в значительной степени любая форма безотносительно .
Весело проводят время.:-)
Для нескольких фиксаций помните что любые ссылки фиксации все продвижение истории до той фиксации. Таким образом в ответе Charles, считайте "старую фиксацию" как "новейшая из старых фиксаций". Если Вы сбросите к той фиксации, то все продвижение истории до той фиксации вновь появится. Это должно сделать то, что Вы хотите.
На самом деле переоснова сохраняет Вашу начальную точку ORIG_HEAD
таким образом, это обычно столь же просто как:
git reset --hard ORIG_HEAD
Однако reset
, rebase
и merge
все сохраняют Ваш оригинал HEAD
указатель в ORIG_HEAD
таким образом при выполнении какой-либо из тех команд начиная с переосновы, Вы пытаетесь отменить затем, необходимо будет использовать повторно пороть.
Я на самом деле помещаю тег резервного копирования в ветку перед тем, как выполнять какую-либо нетривиальную операцию (большинство перестановок тривиальны, но я бы сделал это, если это покажется сложным).
Затем, восстановление так же просто, как git reset --hard BACKUP
.
Ответ Чарльза работает, но вы можете сделать следующее:
git rebase --abort
для очистки после сброса
.
В противном случае вы можете получить сообщение « Интерактивное перебазирование уже началось
».