2016-06-02 4 views
1

Я ошибочно объединил свой git repo с одним из своих пультов. Я попытался изменить это, как указано в this question, но я только получаю ответ:Как вернуть нажатое слияние без каких-либо изменений?

$ git revert -m 1 <commit id> On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean

Как это исправить?

ответ

0

Прочитайте весь ответ перед тем, как делать что-либо, желательно сделать резервную копию git repo (всей папки проекта), если вы чувствуете себя небезопасно, используя, возможно, разрушительные команды.

Если вы не отодвигают изменения после плохого слияния:

Если вы наберете git reflog вы должны получить версию, которая отмечает свою историю только до того, как сделал ошибочный слияние. Если вас не волнуют какие-либо изменения, которые вы, возможно, сделали с того момента (включая локально зафиксированные/нефиксированные файлы), я бы использовал git reset --hard XYZ, если XYZ - это ссылка, которая вам понравилась при просмотре git reflog.

Это приведет к тому, что ваша история будет выглядеть так, как будто ничего плохого не произошло, что я предпочел бы, если бы я никуда не менял никаких изменений (потому что вы действительно не хотите вкручивать с другими людьми историю гит, если они вытащили от пульта, на который вы нажали свои «плохие» изменения).

Если вы подтолкнули изменения после плохого слияния:

Есть много намеков в официальной документации, расположенных здесь: https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt (эта страница связана с man git revert).

Я рекомендую вам пропустить большинство из них, чтобы найти некоторые общие соображения и найти случай, который вы хотите попробовать. git revert сохраняет вашу текущую историю и строит на ней, в отличие от git reset, которая позволит вам отменить свою историю и «стереть» ее части. Если вы сделали резервную копию своего репозитория git, вы должны быть в состоянии играть и учиться чему-то в то время как на нем :)

+0

Итак, я предпринял шаги, чтобы отменить фиксацию: примечания: Это возвращается commit , реверсирование изменений, сделанных в . Это лучшее, что можно сделать? В моем репо по-прежнему отображается 2x фактических коммитов, а на сетевом графике показаны две принципиально идентичные ветви в paralell. – grrrrrr

+0

Это обычная практика/любезность не переписывать историю, которая была нажата. Это оставляет один вариант - нажмите изменения, которые выравнивают предыдущие изменения. Как это выглядит в истории git, немного зависит от того, если вы сделали быструю слияние или нет, если вы раздавили коммиты до слияния и т. Д. Вы не должны бояться позволить журналу git показать много коммитов, они просто указатели на объекты git, чтобы они занимали столько места. Я бы предположил, что раздавить возврат не-ff-слияния в отдельный «single commit revert», включая все diff, было бы сложнее отступить. – chelmertz

+0

, так что в основном история будет просто казаться уродливой из-за этой ошибки, но это не имеет большого значения? – grrrrrr

 Смежные вопросы

  • Нет связанных вопросов^_^