Два файла с одинаковой историей файлов - PullRequest
1 голос
/ 15 декабря 2011

Когда я смотрю на историю FileA.cs и FileB.cs, они оба ссылаются на историю FileA.cs

В какой-то момент эти файлы были просто одним файлом: FileA.cs и некоторыми функциямибыл разделен на два файла.Вероятно, человек, совершивший ошибку, совершил ошибку неправильно, и теперь кажется, что история этих двух файлов связана вместе.Git, кажется, думает, что это один и тот же файл или что-то в этом роде.

Могу ли я сказать, что git обрабатывает их как отдельные файлы?

Редактировать : Я не вижуистория FileB вообще.Я могу видеть только историю FileA, которая не отображает содержимое, которое больше не находится в FileA (потому что оно находится в FileB).Я хочу использовать Blame для FileB, но не могу, потому что он использует историю FileA и не будет отображать строки в FileB.

Numbers.cs (исходный файл / FileA)

11111111
22222222
33333333
44444444
55555555
66666666

Numbers.cs (после разделения / FileA)

11111111
33333333
55555555

EvenNumbers.cs (после разделения / FileB)

22222222
44444444
66666666

В этом примере у меня больше нет доступа к истории к 2,4,6 строкам кода, даже если они все еще существуют в новом файле.Этот файл по какой-то причине использует историю Numbers.cs.

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Git отслеживает содержимое, а не файлы . Так что нет, вы не можете разделить историю.

3 голосов
/ 15 декабря 2011

Git не работает таким образом. Кто бы ни сделал коммит, он не сделал ничего плохого с командой Git.

Git не записывает историю файла, а восстанавливает историю файла из истории всего хранилища. Если Git утверждает, что два файла - это один и тот же файл, то есть потому, что в какой-то момент содержимое двух файлов было практически одинаковым.

Вот более ясный пример того, как работает Git: если вы переместите файл A в файл B, Git покажет это в журналах истории. Однако все, что он на самом деле записывает, - это то, что файл A удален, а файл B создан - но поскольку они имеют одинаковое содержимое (или достаточно близко), Git описывает его как «перемещение» - распознавание перемещения происходит , когда вы спрашиваете для журналов , и он не «записывается» как ход в реальном репо.

Сводка: Git просто предполагает, что файл был перемещен или скопирован, на самом деле он не записан таким образом в хранилище. Иногда Гит угадывает неправильно. Вы можете изменить правила для своих догадок. История все еще там, вы просто должны спросить ее по-другому.

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