Терминал показывает мне «Выполняется возврат».

#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