Вместо BFG, попробуйте новый git filter-repo
, который заменит старый git filter-branch
или BFG
Пример:
Чтобы заменить текст «пароль» на «p455w0rd»:
git filter-repo --replace-text <(echo "password==>p455w0rd")
Но конечный результат будет таким же: новая история коммитов, не только для вашей текущей ветви, но и для все ветви (где был найден ваш пароль)
Это означает git push --all --force
, чтобы переопределить историю удаленного хранилища.
Если пароль был добавлен только в ветке PRзатем удалите, отфильтруйте только эту PR-ветку вместо всего, затем переберите новую историю поверх upstream/master
До удаления пароля:
u--u--u (upstream/master)
/
x--x--x (master)
\
pr--pr--pr (pull-request branch)
После удаления пароля, используя --refs pr
(замените 'pr' на имя вашей ветки pull-запроса: git filter-repo --replace-text <(echo "password ==> p455w0rd") --refs pr)
u--u--u (upstream/master)
/
x--x--X (master)
|\
| pr'--pr'--pr' (new pull-request branch)
\
pr--pr--pr (old pull-request branch)
Youнужно перебазировать эту новую ветку поверх upstream / master, предполагая, что upstream - это исходный репозиторий туда, где вы находитесьg PR.
git fetch upstream
git switch pr
git rebase upstream/master
Тогда PR будет включать только ваши коммиты, а не все коммиты с начала времени.