首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用git filter-branch重写作者/提交者并同时提交消息

使用git filter-branch重写作者/提交者并同时提交消息是一种在Git中修改提交历史的方法。这个过程可以用来更改提交的作者和提交者信息,以及更改提交消息。这个操作需要谨慎使用,因为它会重写提交历史,可能会导致其他协作者遇到问题。

以下是使用git filter-branch重写作者/提交者并同时提交消息的步骤:

  1. 首先,确保你的工作目录是干净的,没有未提交的更改。git filter-branch --env-filter ' GIT_AUTHOR_NAME="新作者名"; GIT_AUTHOR_EMAIL="新作者邮箱"; GIT_COMMITTER_NAME="新提交者名"; GIT_COMMITTER_EMAIL="新提交者邮箱"; GIT_MESSAGE="$GIT_MESSAGE"' HEAD将新作者名新作者邮箱新提交者名新提交者邮箱替换为你想要使用的新值。$GIT_MESSAGE是提交消息的变量,你可以在其中添加或修改提交消息。 3. 等待git filter-branch完成。这个过程可能需要一些时间,具体取决于你的仓库大小和提交历史。 4. 最后,使用以下命令推送更改到远程仓库:git push origin --force --all注意:强制推送可能会导致其他协作者遇到问题,因此在执行此操作之前,请确保与团队成员进行沟通。
  2. 使用以下命令启动git filter-branch

推荐的腾讯云相关产品:

  • 腾讯云容器服务(TKE):腾讯云容器服务是一个强大的容器管理平台,可以帮助你快速部署和管理Kubernetes集群。
  • 腾讯云服务器(CVM):腾讯云服务器是一种灵活的计算服务,可以帮助你快速部署和管理虚拟机。
  • 腾讯云对象存储(COS):腾讯云对象存储是一种可靠、安全、高效的云存储服务,可以帮助你存储和管理大量数据。

产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Git目录为什么这么大

git的一次提交包含4个部分: 工作目录快照名称(一个哈希值) 一条评论/注释 提交者信息 父提交的哈希值 每一个提交Commit相当于一个Patch应用在之前的项目上,借此一个项目可以回到任何一次提交时的文件状态...删除前的文件仍然在Git仓库中保存着。直接删除文件并提交起不到给Git仓库瘦身的效果 在Git仓库彻底删除一个文件只有一种办法:重写Rewrite涉及该文件的所有提交。...借助 git filter-branch 便可以重写历史提交,当然这也是Git中最危险的操作 2.3 如何彻底删除一个文件 以一个文件的提交为例,这个文件可能会关联很多次提交,只有将每一次与该文件有关的的提交记录进行重写...我们需要重写所有分支(或引用) Git会检出checkout所有的提交, 执行该命令,然后重新提交。...参数说明: filter-branch 命令可以用来重写Git仓库中的提交 --index-filter 参数用来指定一条Bash命令,然后Git会检出(checkout)所有的提交, 执行该命令,

1.2K10
  • Git 中文参考(六)

    如果没有给出ident,请使用提交者标识。 请注意,此选项仅在您实际发送电子邮件希望将自己标识为发件人时才有用,但保留原始作者(并且git am将正确选取体内标题)。...确保作者提交者身份信息具有相同时间戳的唯一方法是省略author(从而从committer复制)或使用now以外的日期格式。...author 如果作者信息可能与提交者信息不同,则可以选择显示author命令。如果省略author,则 fast-import 将自动使用提交者作者部分的提交者信息。...具体来说,您可能想要重写作者/提交者名称/电子邮件/时间环境变量(有关详细信息,请参阅 git-commit-tree [1] )。...C..H 要重写提交 E,F,G,H,请使用以下方法之一: git filter-branch ... C..H --not D git filter-branch ...

    22210

    8.3 自定义 Git - Git 钩子

    prepare-commit-msg 钩子在启动提交信息编辑器之前,默认信息被创建之后运行。 它允许你编辑提交者所看到的默认信息。...post-applypatch 运行于提交产生之后,是在 git am 运行期间最后被调用的钩子。 你可以用它把结果通知给一个小组或所拉取的补丁的作者。 但你没办法用它停止打补丁的过程。...post-rewrite 钩子被那些会替换提交记录的命令调用,比如 git commit --amend 和 git rebase(不过不包括 git filter-branch)。...它唯一的参数是触发重写的命令名,同时从标准输入中接受一系列重写提交记录。 这个钩子的用途很大程度上跟 post-checkout 和 post-merge 差不多。...推送到服务器前运行的钩子可以在任何时候以非零值退出,拒绝推送给客户端返回错误消息,还可以依你所想设置足够复杂的推送策略。

    1.5K20

    从仓库中移除敏感信息

    要从仓库的历史记录中完全删除不需要的文件,你可以使用 git filter-branch命令或 BFG Repo-Cleaner。...git filter-branch 命令和 BFG Repo-Cleaner 会重写你的版本库的历史记录,这会更改你修改的现有提交和任何相关提交的SHA。更改的提交SHA可能会影响仓库中的打开请求。...你可以使用 git rm 从最新的提交中删除文件。...使用 filter-branch 警告:如果你在暂存(stash)更改后运行 git filter-branch,你将无法使用其他暂存命令检索你的更改。...这些参数: 强制 Git 处理但不检出每个分支和标签的整个历史记录 移除指定的文件以及作为结果生成的任何空提交 重写你现有的标签 git filter-branch --force --index-filter

    93120

    7.6 Git 工具 - 重写历史

    重写历史 许多时候,在使用 Git 时,可能会因为某些原因想要修正提交历史。 Git 很棒的一点是它允许你在最后时刻做决定。...核武器级选项:filter-branch 有另一个历史改写的选项,如果想要通过脚本的方式改写大量提交的话可以使用它 - 例如,全局修改你的邮箱地址或从每一个提交中移除一个文件。...这个命令是 filter-branch,它可以改写历史中大量的提交,除非你的项目还没有公开并且其他人没有基于要改写的工作的提交做的工作,你不应当使用它。 然而,它可以很有用。...为了从整个提交历史中移除一个叫做 passwords.txt 的文件,可以使用 --tree-filter 选项给 filter-branch: $ git filter-branch --tree-filter...需要小心的是只修改你自己的邮箱地址,所以你使用 --commit-filter: $ git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_EMAIL

    67260

    SVN 切换到 Git

    生成作者文件: 因为我们知道,在 SVN 上提交和在 Git提交对应提交者的信息展示是不同的,SVN 只会保存一个用户名,而 Git 会保存该用户的邮箱,所以我们迁移的第一步就要生成一个映射文件,将...转换仓库 整体转换: 标准的 SVN 文件布局: 如果 SVN 仓库使用标准的了 /trunk, /branches 和 /tags 的目录结构,就可在运行命令时加上参数–stdlayout,使用如下命令...以上三步中所用到的 authors.txt 即为上一步所生成的, 作者 -> 作者 的对应关系文件. # 坑点 完成以上操作的话如果一切正常那么你就会获得一个新的 Git 仓库,然后就可以添加到远端...,所以你需要将历史上所有包含大文件的提交记录重写,删掉大文件相关的东西,git重写 commit 的命令是: git filter-branch --force --index-filter 'git...-cached --ignore-unmatch 你大文件所在的目录' --prune-empty --tag-name-filter cat -- --all 这个过程也比较漫长,他会便利你所有的提交记录一一修改

    94510

    SVN切换到Git方法及坑点

    : 因为我们知道,在SVN上提交和在Git提交对应提交者的信息展示是不同的,SVN只会保存一个用户名,而Git会保存该用户的邮箱,所以我们迁移的第一步就要生成一个映射文件,将SVN上的用户名和其邮箱对应起来...以上三步中所用到的 authors.txt 即为上一步所生成的,作者 -> 作者 的对应关系文件....,所以你需要将历史上所有包含大文件的提交记录重写,删掉大文件相关的东西,git重写commit的命令是: git filter-branch --force --index-filter 'git...--cached --ignore-unmatch 你大文件所在的目录' --prune-empty --tag-name-filter cat -- --all 这个过程也比较漫长,他会便利你所有的提交记录一一修改...,不过就是漫长的等待就可以了,等到完成之后我们需要将代码push到远端,因为我们修改了所有的commit 我们需要强制push使用如下命令 git push origin master --force

    2.8K61

    关于 Git 重写提交历史的一些笔记

    写在前面 ---- 今天和小伙伴们分享一些 Git 重写提交历史的笔记 提交代码遇到相关问题,这里整理笔记 博文为《Pro Git》读书笔记整理 感谢开源这本书的作者和把这本书翻译为中文的大佬们 理解不足小伙伴帮忙指正...所以需要修改之前的提交信息。 在 Git 中 这样的操作叫做 重写历史(本质上是些变基操作) 许多时候,在使用Git时,可能想要修订提交历史。...Git可以通过git stash来决定不与某些内容同时提交,也可以重写已经发生的提交就像它们以另一种方式发生的一样。...当保存退出编辑器时,Git带你到列表中第一个提交的父提交,应用第一个提交(f7f3f6d),应用第二个提交( 310154e),然后让你进入命令行。...为了从整个提交历史中移除一个叫做passwords.txt的文件,可以使用 --tree-filter 选项给 filter-branch $ git filter-branch --tree-filter

    35620

    利用Git钩子实现代码发布

    3.1.2 prepare-commit-msg 在启动提交信息编辑器之前,默认信息被创建之后运行。它允许你编辑提交者所看到的默认信息。...它对一般的提交来说并没有什么用;然而对那些会自动产生默认信息的提交,如提交信息模板、合并提交、压缩提交和修订提交等非常实用。你可以结合提交模板来使用它,动态地插入信息。...post-rewrite钩子被那些会替换提交记录的命令调用,比如git commit --amend和git rebase(不过不包括 git filter-branch)。...它唯一的参数是触发重写的命令名,同时从标准输入中接受一系列重写提交记录。 这个钩子的用途很大程度上跟post-checkout和post-merge差不多。...推送到服务器前运行的钩子可以在任何时候以非零值退出,拒绝推送给客户端返回错误消息,还可以依你所想设置足够复杂的推送策略。

    1.5K30

    教你如何去掉git历史中的敏感信息

    本文作者:0x584A(来自信安之路作者团队) 本章教大家如何使用 GIT 进行一些关于已提交历史的修改、删除操作。...比如碰到下列情况时,如何使用 GIT 实现想要的操作: 1、代码或日志中的注释误提交了,怎么修改它? 2、我想丢弃指定的提交历史可不可以? 3、在提交很久历史记录中存在敏感信息,如何修改或删除它?...阅读本文章时默认大家都具备使用 GIT 进行基本操作的水平。...but untracked files present (use "git add" to track) 可以看到,这里有一个新文件等待添加提交,我们现在来将文件加入索引缓存中构建索引树: $ git...核弹级选项: filter-branch 官方文档上的实例:要从整个历史中删除一个名叫 password.txt 的文件,你可以在 filter-branch使用 --tree-filter 选项

    2.2K00

    测试开发必会12个Git高级命令

    不过,当多个团队成员工作在一个项目中使用常规的git pull来同步分支时,提交时间线就会被不必要的合并提交所污染。...不过,相比于使用合并提交来说,变基会通过在原来的分支中为每次提交创建全新提交重写项目历史。变基的主要好处在于你会得到一个更加整洁的项目历史。此外,这里还有关于变基的陷阱的一些讨论。 2....这会导致如下所示的错误消息Git会为你提供3个选择来修复导致冲突的提交(fa39187): 可以运行git rebase –abort来完全取消变基。...通常你会使用git clone,不过这么做会将所有其他分支都一克隆下来。...该命令会显示出文件中每一行的作者提交hash则会找出该行的上一次修改,还能看到提交的时间戳: $ git blame 当然,Git命令是非常多的,除了上面介绍的12个重要命令外,相信各位读者在日常工作过程中也有自己偏爱且好用的一些命令

    87020

    Git 中文参考(四)

    默认情况下,日期显示在原始时区(提交者作者)中。如果-local附加到格式(例如,iso-local),则使用用户的本地时区。...也可以启用父重写,请参阅上面的 _ 历史简化 _。 --children 同时打印提交的子项(以“提交子项…”的形式)。也可以启用父重写,请参阅上面的 _ 历史简化 _。...-c --committer 收集显示提交者身份而不是作者。 -w[[,[,]]] 通过在width处包裹每一行来包装输出。...如果提交具有不同的作者,则折叠的提交将归因于第一次提交作者。折叠提交的建议提交消息是第一次提交提交消息和具有“squash”命令的提交消息的串联,但是省略了使用“fixup”命令提交提交消息。...编辑提交重写他们的提交消息应该可以正常工作,但尝试重新提交提交往往会产生违反直觉的结果。在这种情况下使用--rebase-merges。

    18510

    Git 基础命令

    -m [message] #提交工作区自上次 commit 之后的变化,直接到仓库区 $ git commit -a #提交时显示所有 diff 信息 $ git commit -v #使用一次新的 commit...,替代上一次提交 #如果代码没有变化,则用来改写上一次的 commit 的提交信息 $ git commit --amend -m [message] #重做上一次 commit, 包括指定文件的新变化...#重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变 $ git reset [commit] #重置当前分支的 HEAD 为指定 commit,同时重置暂存区和工作区,与指定 commit...任何情形下,你也可以通过 filter-branch 来一次性修改多个提交中的邮箱地址。...需要小心的是只修改你自己的邮箱地址,所以使用 --commit-filter 来修改: $ git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_EMAIL

    46830

    如何删除Git仓库中的敏感文件及其历史记录

    本文主要介绍如何使用 git filter-branch 命令删除 Git 仓库中的敏感文件及其历史记录。...在 Git 中,我们通常会将敏感信息(如密码、私钥等)存储在 .gitignore 文件中,以防止这些信息被意外提交到仓库。...2.3 运行git filter-branch 进入仓库目录,使用 git filter-branch 命令删除敏感文件及其历史记录。...git push --force 完成以上步骤后,敏感文件及其历史记录将从Git仓库中删除。 请注意,这种方法可能导致其他协作者的仓库出现问题。建议通知其他协作者在合并更改之前重新克隆仓库。...如果你是一个人使用,那就无所谓了。 3. 结论 本文介绍了如何使用 git filter-branch 命令手动删除Git仓库中的敏感文件及其历史记录。

    33840

    修改 git 的历史 commit,你能想到几种方案?

    最近遇到一个 git 的问题: 我在某个文件里写了一段不应该提交上去的内容,没注意,提交上去了。 后来又提交了很多个 commit。 之后我发现了这个,又把它去掉了,提交了一个新的 commit。...下面有很多命令: pick 是原封不动使用这个 commit reword 是使用这个 commit,但是修改 commit message edit 是使用这个 commit,但是修改这个 commit.../index.md', { encoding: 'utf-8' }); console.log(content); 就是读取 index.md 的内容打印。...然后执行 filter-branch 命令: git filter-branch --tree-filter 'node 绝对路径/script.js' 9aded3..HEAD 这里指定用 --tree-filter.../index.md', newContent); 再跑下试试: 执行成功,提示 main 分支已经被重写了。

    39620
    领券