我在Git中做了一系列提交,现在我意识到我忘记了正确设置我的用户名和用户邮件属性(新机器).我还没有将这些提交推送到我的存储库,所以在我这样做之前如何更正这些提交(只有主分支上的3个最新提交)?
我一直在看git reset和git commit -C <id> --reset-author,但我不认为我是在正确的轨道上.
我一直使用基于接口的git客户端(smartGit),因此对git控制台没有多少经验.
但是,我现在需要在历史记录中替换所有.txt文件中的字符串(因此,不要删除整个文件而只是替换字符串).我找到了以下命令:
git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all
Run Code Online (Sandbox Code Playgroud)
我试过这个,不幸的是注意到密码确实发生了变化,所有二进制文件都被破坏了.图像等都会被破坏.
有没有更好的方法来做到这一点,不会破坏我的二进制文件?
谢谢.
编辑:
我搞砸了什么.导致二进制文件损坏的实际代码是:
$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
Run Code Online (Sandbox Code Playgroud)
顶部的代码实际上使用我的密码奇怪地删除了所有文件.
git version-control substitution git-filter-branch git-rewrite-history
我的一个密码在我的Git仓库中提交了很少的文件.是否有一些方法可以自动将整个历史记录中的其他字符串替换为此密码,以便没有它的痕迹?理想情况下,如果我可以编写简单的bash脚本接收字符串来查找和替换并完成整个工作本身,例如:
./replaceStringInWholeGitHistory.sh "my_password" "xxxxxxxx"
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题与那个问题不重复,因为我要求在不删除整个文件的情况下替换字符串.