git删除提交历史
精准入口==>官方文档
Q:我们在提交代码时,把密码或者敏感信息也提交了,怎么办?
A:“在本地删除密码或敏感信息后,再push到远程仓库”
Q:"但这样删除后,在仓库的commit历史中,还是能看到密码呀?"
A:“那就删除commit历史, 但是怎么删呢。。。。”
B:"Using filter-branch"
首先,
进入到本地目录,执行 git filter-branch, 强制( --force) git对所有分支和tag的历史记录(--tag-name-filter cat -- -all)执行命令,
但是不需要check out(--index-filter)这些历史记录.
执行的命令是 从历史记录中删除指定文件(`git rm --cached --ignore-unmatch 文件名称`)的内容和空提交(--prune-empty)
如果删除的是目录,需使用(`git rm -r --cached --ignore-unmatch 目录名称`)
执行命令, 删除文件在本地的提交历史:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件' --prune-empty --tag-name-filter cat -- --all
然后,
(可选)把文件名加入到.gitignore文件中, 以后提交时,会被过滤掉,防止以后不小心又把敏感数据提交到代码仓库中
echo 文件名 >> .gitignore
git add 文件名
git commit -m "提交时忽略xxxx文件"
最后,
将修改提交到远程仓库,远程仓库的commit历史将被修改
git push origin --force --all
如果tag中也需要删除敏感数据,则执行
git push origin --force --tags
告诉同事, rebase 之前拉取的仓库, 不要merge, 因为merge后提交,会把之前清除的敏感文件又提交到仓库里。
rebase 会先把本地提交的记录打补丁,然后把本地仓库更新成和远程相同,然后再应用补丁。
merge 是合并, 本地已有的敏感数据还在,远端仓库没了。
git删除提交历史的更多相关文章
- git删除所有历史提交记录,只留下最新的干净代码
git删除所有历史提交记录,只留下最新的干净代码 1.Checkout git checkout --orphan latest_branch 2. Add all the files git add ...
- Git 删除所有历史提交记录方法
Git 删除所有历史提交记录方法 切换分支 git checkout --orphan latest_branch 添加所有文件 git add -A 提交更改 git commit -am &quo ...
- Git-Runoob:Git 查看提交历史
ylbtech-Git-Runoob:Git 查看提交历史 1.返回顶部 1. Git 查看提交历史 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git ...
- 【第八篇】- Git 查看提交历史之Spring Cloud直播商城 b2b2c电子商务技术总结
Git 查看提交历史 Git 提交历史一般常用两个命令: git log 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看. 针对 ...
- Git 查看提交历史(分布式版本控制系统)
1.查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史.完成这个任务最简单而又有效的工具是 git log 命令. $ git log commit ca82a6dff8 ...
- git查看提交历史
git日志的查看 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看. 查看日志信息: $ git log 可以用 --oneline ...
- git 查看提交历史
查看提交历史 git log 查看每次提交的具体改动内容 git log -p 查看某个文件历次提交的具体改动内容 git log -p <file name> # git log -p ...
- Git修改提交历史中的作者及邮箱信息
一.使用rebase 如图,红圈中提交的用户名及邮箱是需要改的,则需要复制需要改的提交记录的上一个记录hashcode,在本例中就是a0a891a48f92b51201042fccbe61ed1264 ...
- Git 删除提交记录
.Checkout git checkout --orphan latest_branch 2. Add all the files git add -A 3. Commit the changes ...
随机推荐
- dpkg卸载
from:https://jingyan.baidu.com/article/f54ae2fc2724a71e92b849c4.html 选择 dpkg -l来查看软件的状态. 选择 dpkg -P来 ...
- centos 卸载mysql
1 删除Mysql yum remove mysql mysql-server mysql-libs mysql-server; find / -name mysql 将找到的相关东西delete掉 ...
- 经典论文翻译导读之《Finding a needle in Haystack: Facebook’s photo storage》
https://github.com/chrislusf/seaweedfs [译者预读]面对海量小文件的存储和检索,Google发表了GFS,淘宝开源了TFS,而Facebook又是如何应对千亿级别 ...
- 讲一讲Servlet和JSP的关系
Test.jsp在运行时首先被解析成一个java类Test_jsp.java,该类继承于org.apache.jasper.runtime.HtppJspBase类,而Http又是继承HttpServ ...
- mysql 查询上个月某一天
本文地址:http://www.cnblogs.com/jying/p/8877065.html 需求:获取上个月15号的日期 网上一搜一大堆粘贴复制的大坑:(如下是查询上个月最后一天,可是我要的不一 ...
- 历届试题 对局匹配-(dp)
问题描述 小明喜欢在一个围棋网站上找别人在线对弈.这个网站上所有注册用户都有一个积分,代表他的围棋水平. 小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起.如果两人分差 ...
- web访问命令行
https://github.com/yudai/gotty go get github.com/yudai/gotty gotty -p 8000 -w kubectl exec -it mysql ...
- idea 修改 使用的git账号
打开控制面板-->用户账户-->凭证管理器 如下图点击进入,删除原有的账号 当在idea中再提交或下载代码时,就会弹出如下提示框: 重新输入你自己的账号就可以了.
- 终端设备 tty,pty,pts 概念与文件描述符的联系
第1节 理解终端设备tty.pty.pts概念 简要描述: 终端设备默认具有输入.输出功能. 现代我们最常用的接入服务器端的方式(如:ssh通过tcp/ip的方式连接服务器端,作为服务器的终端设备)为 ...
- 机器人编程挑战python
机器人编程挑战 要使用pip安装模拟器,请运行pip install zombiedice(在Windows上)或pip3 install zombiedice(在macOS和Linux上).要使用一 ...