Git только добавляет / фиксирует перемещение без добавления изменения содержимого

#git

#git

Вопрос:

У меня есть куча файлов, которые я переместил из одного места в другое, и я изменил их содержимое (90% изменений). Файлы перемещаются правильно git mv , и git также определяет это как переименование.

Мой вопрос: возможно ли только добавлять и фиксировать перемещение без добавления изменений содержимого файлов?

У меня уже есть все эти локальные изменения, и я не хочу все переделывать.

Спасибо.

Комментарии:

1. Да, зафиксируйте после перемещения, а затем измените файлы

2. @UlysseBN да … это очевидно. Единственная проблема в том, что я уже внес изменения и не хочу их отбрасывать.

3. это может быть неверно, но посмотрите git stash , поможет ли. это действительно зависит от ситуации

4. Не в вашем сценарии, нет. GIT не видит, что вы «переместили» файлы. Он просто видит, что содержимое (включая метаданные его пути) изменилось. Из того, что я вижу, невозможно зафиксировать метаданные без содержимого

5. @Dominik либо с помощью git stash, либо вообще без git (и просто скопируйте вставку за пределы вашего репозитория), если вам не нравится этот инструмент: каким-то образом сохраните свои изменения, затем перейдите к предыдущему фиксации, затем снова переместитесь, затем зафиксируйте, затем примените изменения.

Ответ №1:

Если вы переместили кучу файлов с помощью git mv , а затем изменили эти файлы git add , еще не запустив :

поэтапные изменения — это переименование без изменений.

Если это так: вы можете git commit сразу же запустить.


Если git mv его легко применить повторно (например: он состоит только из git mv dir1 dir2 ), самый короткий способ — сохранить ваши изменения, запустить то же git mv самое и зафиксировать, а затем вставить ваши изменения

 git stash
git mv [what needs to be renamed]
git commit
git stash pop
  

Если git mv действие немного сложнее, другой вариант :

  1. сохраните выходные git status -s данные во временном файле :

     git status -s > ../renaming.txt
      
  2. выполнить git stash ,

  3. повторно примените список переименований, перечисленных во временном файле и зафиксируйте,

  4. выполнить git stash pop