Я хотел перенести много репозиториев git со своей старой машины с Windows 7 (git 2.6.3.windows.1) на новую под Ubuntu 16.04 (git 2.7.4). Поскольку не все из них имели удаленные репозитории, я решил просто скопировать их. Это должно работать. Однако все отслеживаемые файлы во всех репозиториях стали неподготовленными. На самом деле возможны некоторые из них, которые не были совершены до передачи репо, но большинство из них были совершены.
Если я посмотрю на diff
для файла, который был зафиксирован перед передачей репо с помощью команды:
$git log -p -1 .gitignore
commit c566830cd3ffdf96556d29aee8dd1dc95d359872
Author: Pavel <mail@mail.com>
Date: Fri May 13 18:07:25 2016 +0300
Start
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c2535fe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+__pycache__
+.idea
+test
он возвращает ссылку на последний коммит, где этот файл был фактически зафиксирован. Коммит в приведенном выше примере является первым в репо.
Таким образом, по какой-то причине git отказывается распознавать зафиксированные файлы, но связывает их с последним коммитом, где они были фактически зафиксированы.
Это проблема несовместимости разных версий git или платформ или что-то еще? И как решить эту проблему и не тормозить репо?