git - 修改 gitlab 提交
问题描述
我想修改我很久以前推送的 git commit。有没有简单直接的方法来做到这一点?
从那以后我做了很多改变,对我来说使用git rebase
.
我仍然可以使用git rebase
,但我对 git 的使用非常陌生。
提交涉及我的存储库的第一个文件,并且我不允许创建新的提交来更改我在第一次提交时推送的文件。
解决方案
我想要做的是,改变一个特定的文件内容,
代替交互式变基,使用git filter-repo
代替BFG 或 filter-branch。
使用内容过滤
最后,您可以(如果您是唯一在该存储库上工作的人)执行git push --force
如果要修改文件内容,可以根据文件中的表达式列表进行修改,每行一个。
例如,一个名为的文件expressions.txt
包含:p455w0rd foo==>bar glob:*666*==> regex:\bdriver\b==>pilot literal:MM/DD/YYYY=>YYYY-MM-DD regex:([0-9]{2})/([0-9]{2})/([0-9]{4})==>\3-\1-\2
然后运行
git filter-repo --replace-text expressions.txt
将通过并替换:
p455w0rd
与***REMOVED***
,foo
与bar
,- 任何包含
666
空行的行,- 单词
driver
withpilot
(但如果它之前或之后有字母,则不是;例如,驱动程序将不被修改),MM/DD/YYYY
与YYYY-MM-DD
和的确切文本- 表单的日期字符串与表单
MM/DD/YYYY
的日期字符串YYYY-MM-DD
。
推荐阅读
- amazon-s3 - 为什么我看不到 localhost s3 存储桶的内容?
- snowflake-cloud-data-platform - 在 Talend 的 tMAP 中调用雪花数据库的下一个序列
- django - 如何仅在 Django 测试期间更改环境变量?
- django - 在 Django 中,当全名是外键值时,如何在管理过滤器中访问和显示用户的全名?
- bash - 在 Dockerfile 中使用 linux source 命令会出错
- amazon-web-services - 如何在 EC2 Linux 上通过 http 访问我的 Craft Web 文件夹?
- javascript - Woocommerce,在产品标题后显示选定的属性标题
- r - 如何在 R ggplot 图中设置 Y 轴的固定宽度?
- java - Spring boot Interface Projection 只返回 null
- java - Hibernate 将 @OneToMany 映射列保存为空值