相关疑难解决方法(0)

Git命令可以破坏/重写历史记录

你能提供一个(全部或最常见的)操作或命令列表,这些操作或命令会危害git中的历史记录吗?

什么应该绝对避免?

  1. 推送此提交后修改提交(git commit/ git push/ git commit --amend)
  2. 重新启动已经推动的东西

我希望这个问题(如果它还没有在其他地方之前提出过)成为关于git常见的可避免操作的某种参考.

此外,我使用git reset了很多,但我还没有完全意识到我可以对存储库(或其他贡献者副本)造成的损害.可能git reset有危险吗?

git github git-rewrite-history

6
推荐指数
3
解决办法
1472
查看次数

如何在Git历史中替换单词并正确调试相关问题?

我正在尝试从Git历史记录中删除密码等敏感数据.我没有删除整个文件,而只想用密码代替removedSensitiveInfo.这是我在浏览了大量StackOverflow主题和其他网站后想出的.

git filter-branch --tree-filter "find . -type f -exec sed -Ei '' -e 's/(aSecretPassword1|aSecretPassword2|aSecretPassword3)/removedSensitiveInfo/g' {} \;"
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,它似乎正在重写历史记录(它显示了它重写的提交并需要几分钟).但是,当我检查是否确实已删除所有敏感数据时,它仍然存在.

作为参考,这是我如何进行检查

git grep aSecretPassword1 $(git rev-list --all)
Run Code Online (Sandbox Code Playgroud)

这向我展示了与搜索查询匹配的数百个提交.什么都没有被取代.

知道这里发生了什么吗?

我仔细检查了我正在使用的正则表达式,这似乎是正确的.我不知道还有什么可以检查或如何正确调试这个我的Git知识相当简陋.例如,我不知道如何测试1)我的正则表达式是否匹配任何东西,2)sed没有在所有文件上运行,3)文件更改没有被保存,或者4)其他东西.

很感谢任何形式的帮助.

PS我知道有关此主题的几个StackOverflow线程.但是,我找不到一个关于替换所有(ASCII)文件中的单词(而不是删除文件)(而不是指定特定文件或文件类型).不确定这是否应该有所作为,但所有建议的解决方案都不适用于我.

regex git replace sed git-filter-branch

3
推荐指数
1
解决办法
1501
查看次数