#git #revert
#git #возврат
Вопрос:
Проблема
Я не могу понять, что для меня значит это сообщение на моем терминале.
Время, когда я получил это сообщение, — это когда я печатаю git status
.
On branch develop
Revert currently in progress.
(run "git revert --continue" to continue)
(use "git revert --skip" to skip this patch)
(use "git revert --abort" to cancel the revert operation)
nothing to commit, working tree clean
Почему это произошло
Я создаю приложение самостоятельно. Проблема возникла, когда я использовал git revert
. Это изображение моей фиксации моего удаленного репозитория. Мне жаль, что некоторые символы включают японский.
Во-первых, я заметил, что что-то вызвало огромную проблему для моего проекта при фиксации [Clean]... (id:0844060)
после Merge #119
. В конце концов, я решил сделать git revert
так, что я набрал git revert 463b703
и git revert e9a31bb
; первое было моей ошибкой.
После того, как я вернулся к предыдущей фиксации, я завершил исправление своей проблемы, а затем сделал git push
это снова. С этим проблем нет.
Тем не менее, я только что нашел вышеупомянутое сообщение, когда сделал git status
это после git push origin develop
.
Я просто хотел бы, чтобы вы рассказали мне, что происходит со мной и означает. Должен ли я что-то сделать, чтобы удалить сообщение? И что я должен был сделать после git revert
?
Большое вам спасибо.
================= ================= =============
Редактировать 1 я сделал git reflog
, а затем получил эти сообщения.
0478591 (HEAD -> master, origin/master) HEAD@{0}: checkout: moving from develop
to master
b0b58fa (origin/develop, develop) HEAD@{1}: commit: `[Add] Give_Item詳細画面の追
加
0478591 (HEAD -> master, origin/master) HEAD@{2}: checkout: moving from master t
o develop
0478591 (HEAD -> master, origin/master) HEAD@{3}: checkout: moving from develop
to master
0478591 (HEAD -> master, origin/master) HEAD@{4}: checkout: moving from master t
o develop
0478591 (HEAD -> master, origin/master) HEAD@{5}: commit: [Fix] Gitバグ修正
e9a31bb HEAD@{6}: revert: Revert "[Add]PickUp_Place Delte機能Validation実装"
463b703 HEAD@{7}: revert: Revert "[Clean] コードリファクタリング(destructureing)
"
d3abc8d HEAD@{8}: checkout: moving from develop to master
0844060 HEAD@{9}: checkout: moving from develop to develop
0844060 HEAD@{10}: checkout: moving from master to develop
d3abc8d HEAD@{11}: pull: Fast-forward
5a248fc HEAD@{12}: checkout: moving from develop to master
0844060 HEAD@{13}: commit: [Clean] コードリファクタリング(destructureing)
c038eda HEAD@{14}: commit: [Add]PickUp_Place Delte機能Validation実装
3955b04 HEAD@{15}: commit: [Add] PickUp_List Delteボタン実装
5a22d02 HEAD@{16}: commit: [fix] PickUp_Placeのフィルター修正
================= ================= =============
Редактировать 2 я сделал git status
снова. Похоже, сообщение пропало …?
user@MacBook-Air-4 [12:17:36] [~/Desktop/my_project/extra_exchange] [master]
-> % git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
user@MacBook-Air-4 [12:17:39] [~/Desktop/my_project/extra_exchange] [master]
-> % git checkout develop
Switched to branch 'develop'
user@MacBook-Air-4 [12:18:21] [~/Desktop/my_project/extra_exchange] [develop]
-> % git status
On branch develop
nothing to commit, working tree clean
==== ==== ==== ====
Правка3
Я сделал git push
, это результат этого.
user@MacBook-Air-4 [12:54:04] [~/Desktop/my_project/extra_exchange] [develop]
-> % git push origin HEAD
Enumerating objects: 13, done.
Counting objects: 100% (13/13), done.
Delta compression using up to 4 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 670 bytes | 670.00 KiB/s, done.
Total 7 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), completed with 5 local objects.
To https://github.com/Toshiyuki023Hori/extra_exchange.git
b0b58fa..8951723 HEAD -> develop
user@MacBook-Air-4 [12:54:24] [~/Desktop/my_project/extra_exchange] [develop]
-> % gs
On branch develop
nothing to commit, working tree clean
Комментарии:
1. Вы сказали
git revert
, не зная, что он делает?git revert
создает новую фиксацию с помощью исправления, и это может привести к конфликту слияния. Похоже, у вас такой конфликт, и теперь вы застряли в середине операции. Чтобы выйти из этого, делайте то, что сказано в сообщении; вы могли бы так--abort
же, как это предполагает.2. @matt @RohanKumar Спасибо за предложение. Я сделал
git revert --abort
, но получил другое сообщениеwarning: You seem to have moved HEAD. Not rewinding, check your HEAD!
. После того, как я это сделалgit revert
, я думаю, мне не следовалоgit push
этого делать… Должен ли я снова вернуться к предыдущей фиксации?3. Не могли бы вы уточнить,
git reflog
какие дополнительные шаги вы выполнили послеgit revert
?4. ах, похоже, вы зафиксировали конфликты, не выполнив
git revert --continue
(я вижу это дополнительно0478591
. Я думаю, вам следует перейти к ветке, в которой вы вернули эти коммиты (я думаю, что это такmaster
), и попытатьсяgit reset --soft HEAD^
отменить последнюю фиксацию. Это сохранит файлы, которые вы изменили, в индексе, который вы можете добавитьgit revert --continue
5. Судя по вашим
git status
журналам, я думаюgit
, что решено вернуться, когда вы зафиксировали. Вы можете проверить это, проверивgit show 0478591
и посмотреть, содержит ли он изменения, которые вы хотели отменить
Ответ №1:
git revert
пытается отменить действие коммитов, указанных в качестве аргумента. Иногда это может быть проблематично и может привести к конфликтам слияния (когда два человека изменили один и тот же раздел некоторых файлов, и git не уверен, какое изменение выбрать). Если вы знаете, какие файлы вам нужно изменить, чтобы отменить указанную фиксацию. Вы должны попытаться исправить конфликты и сделать:
git status
...
# Check files pointed out by git for conflicts
# Make changes to files with conflict
git add files/with/conflict
git revert --continue
Если вы не уверены, как действовать дальше, и хотите вернуться к предыдущему состоянию. Вам нужно прервать возврат (уже предложено в комментариях):
git revert --abort