Resolving git rebase удален нами - PullRequest
1 голос
/ 07 мая 2019

У меня есть файл, скажем, a.java, который я изменил.

Тем временем, прежде чем я перенесу свои изменения в master, другой разработчик удалил этот файл (в основном переименовал пакет).

Теперь, когда я перебазирую свои изменения, я вижу

Unmerged paths:
   deletedbyus: a.java

Теперь, так как я хочу сохранить изменения, я сделал .. Я попробовал git добавить a.java, но это не работает, я все еще вижу

Unmerged path:
 deltedbyus: a.java

Если я сделаю git rm или rm, файл будет помечен, но он будет показан как удаленный, что приведет к удалению файла полностью.

Какой должен быть правильный способ восстановить файл с помощью моегоизменения не повреждены.

1 Ответ

1 голос
/ 07 мая 2019

Предполагается, что вы находитесь на ветке master, а кто-то еще отправил из a.java файла *1003* изменения пакета в master и теперь вы делаете git rebase на master ветке после фиксации ваши изменения, давайте уточним, что именно это означает:

В этой ситуации git сбрасывает HEAD вашей ветви master на одну из удаленной ветви origin/master. А затем git берет каждый из ваших коммитов и переписывает их поверх нового мастера HEAD.

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

В этом контексте, когда git сообщает вам deletedbyus, это означает, что в коммите git переписывает, файл существует снова , потому что он уже удален в нашей ветке (нами), но что я (git) должен сделать с изменениями в файле, который больше не существует? Кто-то удалил его намеренно, и я (git) не могу создать файл снова без подтверждения (и это правильно, действительно).

Итак, что вы должны сделать, чтобы исправить эту ситуацию? На самом деле вы должны включить ваши изменения ( их с точки зрения git во время перебазирования) в место, где сейчас существует файл (в новом пакете, при условии, что вы хотите сохранить пакет менять). Как только вы это сделали, вы должны сделать

# Manually carry the changes you made to 
# file/on/old/package/a.java 
# to file/moved/to/new/package/a.java

git add file/moved/to/new/package/a.java # To confirm your changes
git rm file/on/old/package/a.java # To confirm deletion
git rebase --continue # To continue with your rebase

Но какие изменения вы внесли в файл? Вы можете увидеть это с git diff HEAD:file/moved/to/new/package/a.java file/on/old/package/a.java

...