Git - Переместить файл в старый коммит - PullRequest
0 голосов
/ 14 октября 2019

У меня проблема в git, и мне нужна помощь. Это настройка:

  • У меня есть ветвь функций в git. refactor_database
  • Эта ветвь функций теперь готова к объединению в master.
  • Первый коммит этой ветки имеет 3 месяца
  • Нет конфликтов

ранее был один файл

  • 1) "db/db.service.ts"

, теперь есть 3 файла:

  • 1) "db/db.service.ts"
  • 2) "indexed-db/indexed-db.service.ts"
  • 3) "sqlite/sqlite.service.ts"

1 (дБ. service.ts) ранее содержал содержимое 2 (indexed-db.service). Теперь 1 - только оболочка, которая перенаправляет вызовы метода в 2 или 3. В зависимости от некоторых условий.

Однако я допустил ошибку 3 месяца назад и до сих пор не осознал ее:

  • Git считает, что 1 - это старый файл, и в нем есть куча изменений - на самом деле это новый файл
  • Git считает, что 2 - это совершенно новый файл. Однако это просто файл, который раньше был 1 (файл перемещен)

Этот снимок экрана проясняет проблему: Я хочу, чтобы "+" было @ db.service.ts и sqlite.service.ts.

indexed-db должен быть переименован в db.service вместо нового файла (+)

enter image description here

Мой вопрос: Могу ли я сделать это ретроспективно? Если да, то как?

1 Ответ

1 голос
/ 14 октября 2019

Здесь вы столкнулись с одним из ограничений git. Единственный способ, которым git отслеживает один и тот же файл, который был переименован, - это использование эвристики, поэтому в зависимости от вашего коммита он может в конечном итоге не понять его. Хорошая практика, чтобы помочь git следовать перемещенным файлам, это совершать коммиты с однократным перемещением.

Возможно, вы уже знаете это, и именно поэтому вы запрашиваете способ изменить свой коммит:

Если яесли бы вы были, я бы искал хеш коммита как раз перед вашим и git rebase -i <hash>.

Интерактивная перебазировка позволяет вам «редактировать» коммит в списке. Здесь вы можете изменить свой коммит и сделать его унитарным, а затем git rebase --continue.

Подумайте о добавлении в новую ветку, когда вы это сделаете, потому что вы не сможете толкать без форсирования и, я осторожен,Я этого не делаю.

Может быть, взглянем на это ?

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