Как добавить файл в определенный коммит с помощью git filter-branch? - PullRequest
0 голосов
/ 15 января 2019

Нам нужно добавить какой-нибудь файл в определенный предыдущий коммит в репо, и мы готовы переписать историю, чтобы она влияла на все ветви, отклоняющиеся от потомков этого коммита. Для этого мы пытаемся использовать git filter-branch, используя add, так как после добавления файла в коммит он не будет добавлен к дочерним элементам, но мы не можем найти правильные параметры, чтобы остановить его влияние на некоторый параллельный процесс. расходящиеся коммиты. Смотрите изображение для понимания.

Мы используем эту команду, нацеленную на красный коммит, но файл появляется на фиолетовом коммите - почему? - и он также появляется в зеленом коммите, и мы не хотим, чтобы он влиял на этот путь кода, просто появился в красном коммите и затем был унаследован через все дочерние коммиты и слияние.

git filter-branch --index-filter "cp C:/Users/asdf/Documents/IdeaProj ects/git-crypt-tests/.gitattributes . && git add .gitattributes" 72c7e292ddd134c04285f3530afc829fd38de4 28..HEAD

Что я плохо понимаю?

Спасибо.

enter image description here

1 Ответ

0 голосов
/ 15 января 2019

Похоже, вы думали, что когда вы пишете диапазон фиксации как A..B, он будет включать границы. Но это не так. Это обозначение сокращенно для B ^A, то есть для всего, что приводит к B, но исключает все до A. Это удаляет «нижнюю» границу A из диапазона. Решение состоит в том, что вы пишете A~, что означает «предок A»: A~..B.

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

git filter-branch --index-filter "cp C:/Users/asdf/Documents/IdeaProjects/git-crypt-tests/.gitattributes . && git add .gitattributes" -- HEAD --not 72c7e29~ ":/Fix Prestapp"

То есть вы говорите, что хотите, чтобы все коммиты вели до HEAD, но не до 72c7e29~ и не до коммита, сообщение которого начинается с Fix Prestapp.

...