Lea*_*ner 1 git github git-filter-branch git-rewrite-history bfg-repo-cleaner
我正在尝试从我的 Git 存储库历史记录中删除密码(我很长时间以来手动从我的 Git 存储库中删除了密码,但没有从历史记录中删除,这次尝试清除我的 Git 存储库的整个历史记录)
同样,从分叉主仓库开始,然后按照步骤 - BFG Repo-Cleaner并尝试像这样在 StackOverflow 上进行搜索
在本地 Git 存储库上遵循的所有步骤,一切看起来都很好,最后一个是git push,但在那之后我没有看到我的分叉存储库上的提交,尽管我看到了这条消息This branch is 853 commits ahead, 853 commits behind,并且它提供了创建PR(以及比较)的选项在这个 PR 中,我看到了很多差异 [比如前一段时间创建的新文件,并且仍然存在于当前版本中],这与我试图替换的密码无关。
Git 版本是 2.21.0
而不是 BFG,尝试新的git filter-repo,它将取代旧的git filter-branch或 BFG
例子:
用“p455w0rd”替换文本“password”:
Run Code Online (Sandbox Code Playgroud)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)
Run Code Online (Sandbox Code Playgroud)
删除密码后,使用--refs pr(用你的拉取请求分支的名称替换 'pr': 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)
Run Code Online (Sandbox Code Playgroud)
您需要在上游/主控之上重新建立新分支,假设上游是您进行 PR 的原始存储库。
git fetch upstream
git switch pr
git rebase upstream/master
Run Code Online (Sandbox Code Playgroud)
那么 PR 将只包括您的提交,而不是自开始以来的每个提交。
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |