Как удалить фиолетовый фиксатор и «Объединить ветвь ...». Я пытаюсь использовать «git rebase -i HEAD ~ x», но не работает.Удалить фиксацию, которая объединена с основной веткой
ответ
Вы можете сделать этот вид магии с git fast-export
(после того, как вы сделали резервную копию вашей рабочей копии): Run git fast-export --no-data --all --full-tree > all_commits
в рабочем копия. Затем вы открываете файл all_commits в текстовом редакторе и выполняете поиск «initial commit». Среда вокруг него должна выглядеть следующим образом:
commit refs/heads/master
mark :110
author Foo Bar <[email protected]> 1462192582 +0100
committer Foo Bar <[email protected]> 1462192582 +0100
data 14
Initial Commit
deleteall
M 100644 b346ed4d2db0c8110fe3104bd155a413b878527c some/file
commit refs/heads/master
mark :111
author Foo Bar <[email protected]> 1462192582 +0100
committer Foo Bar <[email protected]> 1462192582 +0100
data 21
Merge branch 'master'
from :109
merge :110
deleteall
M 100644 b346ed4d2db0c8110fe3104bd155a413b878527c some/file
M 100644 4d9af842ccf23b883b234f5ae93d71f11fa285de some/other_file
commit refs/heads/master
mark :112
author Foo Bar <[email protected]> 1462192582 +0100
committer Foo Bar <[email protected]> 1462192582 +0100
data 14
Did some stuff
from :111
deleteall
M 100644 b346ed4d2db0c8110fe3104bd155a413b878527c some/file
M 100644 d6a0ad80d11b9d376c23d17300ce95d724d050e7 some/other_file
Вы вырезали, что совершить, путем удаления фиксации блока и настройка ссылок (mark
места ссылка на обязательство определить его позже, и from
или merge
определить родители коммит):
commit refs/heads/master
mark :111
author Foo Bar <[email protected]> 1462192582 +0100
committer Foo Bar <[email protected]> 1462192582 +0100
data 21
Merge branch 'master'
from :109
deleteall
M 100644 b346ed4d2db0c8110fe3104bd155a413b878527c some/file
M 100644 4d9af842ccf23b883b234f5ae93d71f11fa285de some/other_file
commit refs/heads/master
mark :112
author Foo Bar <[email protected]> 1462192582 +0100
committer Foo Bar <[email protected]> 1462192582 +0100
data 14
Did some stuff
from :111
deleteall
M 100644 b346ed4d2db0c8110fe3104bd155a413b878527c some/file
M 100644 d6a0ad80d11b9d376c23d17300ce95d724d050e7 some/other_file
чем вы импортировать измененный поток с git fast-import --force < all_commits
. После этой операции оскорбительная фиксация исчезла.
Когда что-то пошло не так, вы можете восстановить свои исходные коммиты с помощью git fast-import --force < all_commits.backup
, но неплохо было бы создать резервную копию до этой операции.
+1. «сделай такую магию». Этот тип операции обычно не выполняется в типичном рабочем процессе и не изменяет историю (что может быть очень плохо, если другие извлекают из этой ветки). 'Git revert' обычно является более подходящим решением для« отмены »этого фиксации. – g19fanatic
отлично! Это не только может удалить любую фиксацию, но также может изменить электронную почту и информацию и многое другое. Кстати, можете ли вы переустанавливать, объединять или выполнять некоторые сложные операции с помощью git fast-export? – yelliver
И у моего «Initial commit» есть строка «Initial commitdeleteall» без пробела перед «deleteall», это странно? – yelliver
вы можете использовать
git reset --hard HEAD~1
или
git reset --hard <sha1-commit-id>
Если вы уже толкнул его
git push origin HEAD --force
, который фиксирует, должен ли я получить
вы можете найти его с помощью git log –
Я думаю, что это не отвечает на вопрос, так как @yelliver хочет удалить только одну фиксацию из истории (если я правильно понимаю его вопрос), а 'git reset --hard' удалит все коммиты после
Вы можете сделать перебазирования фиксаций, которые должны быть preser ved поверх последнего действительного фиксации. Чтобы найти фиксации, необходимо сохранить две ветви tmp_1, tmp_2
. HEAD
обеих этих ветвей укажет на то, что сохраняются конечные точки коммитов.
Теперь переустановите эти коммиты поверх последнего действительного фиксации. Сила переименует мастера после успешной перезагрузки.
git checkout -b tmp_1
git checkout -b tmp_2 <sha-of-commit-after-merged-one>
git checkout -b tmp_3 <sha-of-commit-before-merged-one>
git rebase --onto tmp3 tmp_2 tmp_1
После успешного Rebase,
git branch -f master tmp_3
Удалить другие отрасли.
Вы можете вернуть этот коммит с помощью следующей команды: мерзавец вернуться < Sha1>
- 1. Mercurial: найти последнюю фиксацию на ветке foo, которая была объединена с веткой.
- 2. Как связать фиксацию с веткой
- 3. Как «пометить» данную фиксацию веткой?
- 4. композитору требуется конкретная фиксация git, которая не была объединена с веткой
- 5. Git - слияние основной ветви с текущей веткой
- 6. Что происходит с веткой git после удаления, если она не была объединена?
- 7. Как я могу ограничить фиксацию определенной веткой в Mercurial?
- 8. Удалить конкретную фиксацию
- 9. Удалить промежуточную фиксацию GIT
- 10. Удалить фиксацию на gitlab
- 11. Как предотвратить слияние файлов GIT с основной веткой
- 12. Как воспроизвести фиксацию на ветке, которая уже содержит фиксацию?
- 13. Как объединить фиксацию, которая была возвращена?
- 14. Как использовать getline в AWK с командой, которая объединена вместе
- 15. Ветвь объединена, совершена потеряна
- 16. Каков самый простой способ вернуть все коммиты на git, чтобы овладеть веткой, которая еще не была объединена?
- 17. Могу ли я безопасно удалить ветку темы Git, которая была объединена с мастером?
- 18. Git: Как удалить ветку, которая уже была зафиксирована, нажата и объединена с мастером?
- 19. Как удалить полностью неудачную фиксацию?
- 20. Как удалить предыдущую фиксацию локально
- 21. В SVN, что такое лучшая практика с ветвью, которая никогда не будет объединена?
- 22. Отдельная глава с филиалом полностью объединена?
- 23. Git - Удалить фиксацию из истории
- 24. Как удалить фиксацию из истории?
- 25. Как сделать непереходное git-слияние с веткой, которая не проверена?
- 26. Что делать с удаленной веткой, которая имеет конфликт в названии?
- 27. Как связать порт с веткой функции после слияния?
- 28. Не отставать от мастера с другой веткой
- 29. Найти фиксацию, которая удалила подпись UTF-8
- 30. Повторить фиксацию, которая была отменена конфликтом?
'but not work.' - Где это происходит, и что такое выход? – BVengerov
@BVengerов фиолетовый фиксация не появляется при запуске «git -rebase -i» – yelliver
Вы попробовали 'git rebase -p -i'? ('-p' для« сохранения слияния ») – VonC