Не существует такой вещи, как коммит для определенного файла.В git коммит - это снимок всего контента.(Можно иметь независимые графы фиксации в одном репо, что может создать своего рода серую область вокруг этого оператора; но такое использование в лучшем случае логически эквивалентно нескольким репо, каждое из которых ведет себя так, как я описал, и в худшем случае можетработать против фактора git как инструмента управления исходным кодом.)
Похоже, вас заставляют думать иначе из-за синтаксиса git log -- path
.Это не отражает структуру коммитов;это отражает то, как команда log обрабатывает фиксации.См. git log
документы ('https://git -scm.com / docs / git-log '):
[-]
Показывать только те коммиты, которые достаточны для объяснения того, как файлы, соответствующие указанным путям, стали
Команда журнала все еще видит все коммиты - она выполняет тот же коммитпостроить график, если бы вы не указали путь, но он отфильтровывает все, что не влияет на указанные пути, и выводит информацию только о коммитах, на которые влияет do эти пути.
Но даже те коммиты, которые он печатает, являются полными снимками проекта.Они выбраны только потому, что они включают в себя изменения этого пути (возможно, среди других изменений).
В git
нет фиксации на уровне файлов, и если вы не включите ограничение пути, вы будетепросмотреть все коммиты в указанной истории независимо от того, на какой путь (пути) они влияют.
Наконец, если коммит был «пустым» (то есть его содержимое совпадает с его родителем), то любой путь на основе *Аргумент 1032 * пропустил бы этот коммит, поскольку по определению он не способствует пониманию того, как файл попал в его текущую форму.
Теперь из вашего объяснения того, что вы пытаетесь выполнить:
Конечно, можно добавить лишнее пространство для добавления нового коммита в конкретный файл,
Нет, это не так.Потому что не существует такого понятия, как «фиксация в конкретном файле».Для этого нужно создать новый коммит, который воздействует на этот файл и, следовательно, будет выбран, когда вы дадите log
этот файл в качестве аргумента пути.(Но это будет также , когда вы не дадите аргумента пути.)