Говоря git, что несколько файлов происходят из одного файла - PullRequest
1 голос
/ 21 марта 2019

У меня есть репо, в котором один файл был разбит на несколько других.

Например, скажем, у нас было abcd.txt:

a
b
c
d

И он был разбит на a.txt:

a

b.txt:

b

и т. Д.

Однако, когда я git blame a.txt, он говорит, что я написал весь файл, когдана самом деле автор abcd.txt должен быть указан как автор.Это также исключает мою страницу обзора GitHub, потому что похоже, что я удалил файл и добавил 4 файла, когда я на самом деле просто разделил один файл, который было бы намного проще просмотреть.

Как мне теперь сказать git, что я разбил этот файл на части?Как я должен был сделать раскол?

1 Ответ

0 голосов
/ 21 марта 2019

Это следствие фундаментального проектного решения в git. Git коммиты не представляют различия .Git commit представляет состояние моментального снимка вашего репо (то есть он не отслеживает переименования, перемещения файлов, разбиения файлов, объединения файлов и т. Д.).

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

Общепринято, что лучше всего смотреть на коммит непосредственно перед коммитом, который добавил a.txt (или такой же коммит, если abcd.txtудаление произошло в том же коммите), чтобы увидеть, откуда исходит содержимое файлов.

Одна из стратегий - написать пояснительную заметку в расширенном комментарии коммита, чтобы пользователи могли видеть, что произошло, например, git -m "Splitting up abcd.txt to a.txt, b.txt, c.txt, d.txt".Я также рекомендую избегать смешивания операций переименования, разделения и объединения файлов с другими изменениями:

  1. Сделать коммит с abcd.txt, как это было.
  2. Разделить abcd.txt на отдельные файлы (a.txt, b.txt и т. Д.) В том же каталоге без внесения каких-либо других изменений.
  3. Commit
  4. Перемещение отдельных файлов в их окончательные каталоги
    • Этоизбегайте смешивания разделения файла с последующей операцией перемещения файла в одном и том же коммите
  5. Commit
    • Это позволяет избежать смешивания перемещения файла с последующей операцией редактирования файла втот же коммит
  6. Редактировать a.txt, b.txt и т. д. как обычно.
  7. Фиксация
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...