Как исправить конфликт git "добавлено нами" после применения sta sh после переименования - PullRequest
1 голос
/ 10 июля 2020

Я не помню, как мое git локальное репо попало в это состояние, но вот ситуация:

В моем статусе в командной строке указано «ничего не коммитить, рабочее дерево чистое».

git stash show -p stash@{0} показывает различие некоторых изменений, и когда я случайно пролистываю (не совсем понимая, как работает язык git), я вижу определенные c слова, которые я помню, писал в определенных функциях , поэтому я чувствую себя воодушевленным, потому что знаю, что моя работа не потеряна .

Но когда я бегу git stash apply stash@{0}, я вижу:

CONFLICT (rename/delete): datastore/static/js/app/main.js deleted in Stashed changes and renamed to assets/js/app/helpers/main.js in Updated upstream. Version Updated upstream of assets/js/app/helpers/main.js left in tree.
CONFLICT (rename/delete): datastore/static/js/app/filters.js deleted in Stashed changes and renamed to assets/js/app/helpers/filters.js in Updated upstream. Version Updated upstream of assets/js/app/helpers/filters.js left in tree.

И git status показывает:

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        added by us:     assets/js/app/helpers/filters.js
        added by us:     assets/js/app/helpers/main.js

Я пробовал запустить git add ., но тогда мои файлы не содержали изменений, которые существовали в sta sh.

Итак, я сбросил ситуацию (вернулся к «ничего не фиксировать, рабочее дерево очищено»), запустил git stash apply stash@{0}, а затем на этот раз запустил git restore --staged assets/js/app/helpers/*, и результат мне не кажется другим (по сравнению с тем, когда я запускал git add .) .

В обоих случаях, когда я проверяю свои файлы, отсутствуют определенные ключевые слова, которые существуют в sta sh.

Как мне восстановить свою работу?

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Если вас интересует содержимое datastore/static/js/app/main.js, похоже, что в sta sh сохранено действие «удалить этот файл». Контент, который вы sh восстанавливаете, может быть сохранен в коммите до sh.

Чтобы разобраться в гиббери sh Я написал выше:

С терминала , запустите:

git log --oneline --graph stash@{0}

Вы увидите, что ваша sta sh на самом деле является фиксацией (она просто не хранится в одной из ваших веток) и что она имеет родительскую фиксацию (это было состояние вашей работы в какой-то момент).

Вы можете просмотреть полное содержимое файла в sta sh:

git show stash@{0}:datastore/static/js/app/main.js

и все содержимое файла в "родительской фиксации":

git show <parentsha1>:datastore/static/js/app/main.js

Если моя догадка верна, первое «git шоу» будет пустым.

В любом случае, вы можете получить контент, который sh:

git checkout <the correct ref> -- datastore/static/js/app/main.js

и затем используйте его как хотите.

1 голос
/ 10 июля 2020

Вы можете вернуться к той версии, из которой вы спрятали, sta sh pop, переименовать файл, затем снова sta sh save, затем вернуться к ревизии, над которой вы сейчас работаете, и sta sh pop . Тогда переименование не должно быть проблемой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...