BFG Repo-Cleaner(快速清除Git提交历史中的特定文件) 有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传的文件(没及时或忘了加到.gitignore里的),而且上传的文件又特别大的时候...的另一种选择 BFG是git-filter-branch之外的一种更简单、更快的方法,可以清除Git存储库历史中的不良数据: 删除 大文件 删除 密码、凭证 和其他 私人数据 git-filter-branch...strip-blobs-bigger-than 50M my-repo.git 将文件*(前缀行'regex:'或'glob:'如果需要)*中列出的所有密码替换为' *** remove *** ',...无论它们在您的存储库中的任何地方: $ bfg --replace-text passwords.txt my-repo.git 删除Git中所有名为'.git'的文件夹或文件—保留的文件名。...如果某个坏的文件(比如10MB的文件,当您指定--strip-blobs-bigger-than 5M)在受保护的提交中,那么它不会被删除—它将保存在您的存储库中,即使BFG从以前的提交中删除了它。
(IMAP/POP3)代理服务器,可以作为一个HTTP服务器进行网站的发布处理,以及作为反向代理进行负载均衡的实现 外网访问: 如果只映射到内网IP,那访问服务器只能在内网访问,这显然不是我们所期待的...输入后git会从远程拉取初始化代码下来,拉取后Git显示如下 然后文件夹就有了Hexo的源码了 在Git中改变当前目录的位置,进入该文件夹,代码如下 cd web_blog_name/ 使用hexo.../ #改变文件夹权限 文件夹建立后,改变当前路径到建立的文件夹,输入如下指令建立Git仓库(web_blog为自定义的名字) cd /var/repo/ git init --bare web_blog.git...,即 /var/www/hexo下面,钩子代码如下: #使用vim在仓库下创建一个新的钩子文件 sudo vim /var/repo/web_blog.git/hooks/post-receive 在文件下添加如下...sudo chmod +x /var/repo/web_blog.git/hooks/post-receive Nginx网页根目录设置 上一步我们已经创建好网页根目录,并且已经做好文件传送钩子,这一步我们配置
.venv文件夹中创建虚拟环境。...我把这个项目命名为dsexample,我知道这个名字很蠢,但我不想浪费时间去想一个更好的。为了展示如何使用poetry,我添加了一个特定版本的pandas库,以及所有额外需求的fastapi框架。...we have already added the tool venv, it will work directly pre-commit --version 要使用pre-commit,首先需要向顶级文件夹中添加一个名为...在该文件里,你需要配置所有应该运行的钩子。在mypy与Black的环境下,文件内容如下所示。...Black工具的钩子函数不仅会检查格式,还会相应地为文件添加格式。每次添加新的钩子函数时,建议一开始在所有文件中手动运行pre-commit,因为它只能作用于上次提交之后更改过的文件。
.venv文件夹中创建虚拟环境。...终于完成了使用poetry创建项目的所有准备工作,我把这个项目命名为dsexample,为了展示如何使用poetry,我添加了一个特定版本的pandas库,以及所有额外需求的fastapi框架。...we have already added the tool venv, it will work directlypre-commit --version 要使用pre-commit,首先需要向顶级文件夹中添加一个名为...在该文件里,你需要配置所有应该运行的钩子。...Black工具的钩子函数不仅会检查格式,还会相应地为文件添加格式。 每次添加新的钩子函数时,建议一开始在所有文件中手动运行pre-commit,因为它只能作用于上次提交之后更改过的文件。
开源的博客平台多如牛毛,而且不乏优秀之作,如 Hexo、Octopress、Jekyll、Wordpress。本系列文章将分享如何利用各种博客引擎在云端搭建属于自己的个人博客。...配置 Nginx 托管博客文件目录。 配置远程仓库自动更新到博客文件目录的钩子。...2.3 创建 Git 钩子 接下来,在服务器上的裸仓库 hexo_static 创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo。...在自动生成的 hooks 目录下创建一个新的钩子文件: vim /var/repo/hexo_static.git/hooks/post-receive 在该文件中添加两行代码,指定 Git 的工作树...然后,通过 Git 钩子,将 Hexo 生成的博客静态文件,快速地推送到 Web 服务的托管目录。
4.重启Nginx服务,使得改动生效 命令如下: sudo service nginx restart image.png 创建Git钩子 1.在之前创建的hexo_static裸仓库下有一个hooks...文件夹,在其中创建一个名为post-receive的钩子文件: 命令如下: vim /var/repo/hexo_static.git/hooks/post-receive 在其中写入如下内容: #!...-t rsa在windons用户下/.ssh文件夹中生成密钥 将生成的公钥id_rsa.pub拷贝到ubuntu服务器的/home/blog/.ssh/authorized_keys上 首先创建.ssh...下id_rsa.pub文件中的内容复制到Ubuntu下的authorized_keys文件 命令如下: sudo vim .ssh/authorized_keys image.png 部署Hexo项目...编辑hexo的config.yml文件,在deploy处修改repo项: deploy: type: git repo: blog@server_ip:/var/repo/hexo_static.git
2、在本地新建一个文件夹test,然后我们在该文件夹中右键 --> Git Bash Here,输入命令:git clone 远程仓库地址 ?...六、删除Github中已有的仓库中的某个文件或文件夹(即删除远程仓库中的某个文件或文件夹) 我们知道,在Github上我们只能删除仓库,并不能删除文件或者文件夹,所以只能用命令来解决。...即我们通过删除本地仓库的某个文件或文件夹后,再将本地仓库与远程仓库同步,即可删除远程仓库中的某个文件或文件夹。...6.1、本地仓库和远程仓库同时删除文件或文件夹 1、我们先在本地仓库中删除掉文件a.txt ? 2、然后执行以下命令,即可删除远程仓库中的文件了 ? 删除远程仓库中的文件夹同理。不在演示。...6.2、只删除远程仓库的文件或文件夹,不删除本地仓库的文件或文件夹 假如我们想要在远程仓库中将文件夹test01删除掉,但在本地仓库中并不想把它删除: ? 在命令窗口输入以下命令: ?
前言 接着上篇 之前的建立分站教程(Hexo建立分站 | 花猪のBlog (cnhuazhu.top))是利用了Hexo纯静态的优势,将不同主题渲染后的public中的内容放在主站的public文件夹中...文件夹作为站点根目录,在该文件夹中修改index.html用作博客的引导页,后续在该文件夹中搭建网站结构。...钩子 1.在之前创建的两个裸仓库中有有一个hooks文件夹,分别在其中创建名为post-receive的钩子文件: 命令如下: butterfly仓库: vim /var/repo/hexo_butterfly.git...保存后退出 2.让两个文件变为可执行文件 命令如下: chmod +x /var/repo/hexo_butterfly.git/hooks/post-receive chmod +x /var/repo...: type: git repo: blog@server_ip:/var/repo/hexo_next.git branch: maste 然后执行Hexo命令“三步骤”,上传静态文件至Ubuntu
important actions occur Git hook能够在发生某特定行为的时机,触发执行自定义的脚本。...post-checkout: 执行git checkout命令成功后触发,可用于生成特定文档,处理大二进制文件等 post-merge: 成功完成一次 merge行为后触发 pre-push: 执行git...update: 与pre-receive相似,但当一次push想更新多个分支时,pre-receive只执行一次,而此钩子会为每一分支都执行一次 post-receive: 当整个push操作完成时触发...,常用于服务侧同步、通知 如何使用git hook hook脚本会存放在仓库.git/hooks文件夹中,git提供了一些shell样例脚本以作参考。.../hooks文件夹中新建以钩子名命令的脚本文件(比如pre-push),这个脚本就会在适当的时机被触发。
在提示的路径下找到id_rsa文件,复制文件内容,下面配置Git时会用到 配置Git 如果没有特别说明,安装过程中如有出现选择,一律选择yes(y),(即输入yes(y)然后点击回车) 准备工作...hexo.git 创建Git钩子 # vim /home/repo/hexo.git/hooks/post-receive 点击键盘“i”建进入编辑模式,然后通过方向键编辑,将以下代码复制进去 #!...git: # chown -R git:git /home/repo 然后再上传; 如果还是不行,建议使用root推送; 在hexo配置文件中修改: repo: root@域名或IP:/home/repo.../hexo.git 如果root无法推送,同样大概率也是因为文件所有者问题,将hexo仓库和git仓库的所有者修改为root即可 如何判断文件夹所有者是否正确呢?...回到/home目录, 查看git仓库和hexo仓库的文件夹所有者: # cd /home # ll 正常情况可以看到git仓库和hexo仓库的文件夹所有者全为git drwxr-xr-x 2 git
一般大部分都用以上方式部署自己的hexo博客,但也有少部分部署在自己服务器的同志。 新手部署服务器最常见的方法就是:直接把本地生成的public中的文件,直接ftp到服务器www根目录,简单粗暴。...仓库,并配置git钩子,自动同步文件到网站目录 配置网站访问设置 本地git deploy设置 准备工作 2.本地生成ssh秘钥备用 git config --global user.name "GitHub...切换至 git 用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件 su gitmkdir ~/.sshvim ~/.ssh/authorized_keys 同样i...进入编辑模式,把之前本地准备的id_rsa.pub文件中的公钥复制进去,按esc后,输入:wq保存。...git 仓库 cd /var/repogit init --bare hexo.git 编辑一个 Git 钩子 vim /var/repo/hexo.git/hooks/post-receive
搭建前的准备 在我们正式开始搭建一个完全属于我们自己的博客之前,我们首先要做好一些事前的准备(当然,如果你没有做好准备也没有关系,下面会一步一步的教你搞定这些) 服务器一台 or github 账号一个...git 切换到该用户去创建仓库 su git cd /home/git/ mkdir blog mkdir repo cd repo git init --bare blog.git 创建钩子 cd...--save hexo-deployer-git 修改_config.yml文件 deploy: type: git repo: git@server_ip:/home/git/repo/blog.git...branch: master 在本地的博客文件夹下输入deploy命令,并输入账号密码即可~ hexo clean && hexo generate --deploy 输入你的服务器IP,即可访问查看效果啦...修改_config.yml文件 deploy: type: git repo: git仓库地址 branch: master 在本地的博客文件夹下输入deploy命令,并输入账号密码即可~
例如只拉取分支最新的快照: 1 $ git clone --single-branch -b --depth 1 http://your-site.com/your-group/your-repo.git...我所选择的扩展就是由 Github 团队开发的 Git-LFS 。 Git-LFS 的原理并不复杂:大文件不再支持添加到仓库中,而是存储到另外的 LFS 服务器上。仓库中只保留这些文件的文本链接。...当拉取仓库时,Git-LFS 的钩子将自动把这些文本链接恢复成 LFS 中的实际内容。...警惕钩子覆盖 第一个遇到的问题就是钩子的覆盖问题。前面我们提到 Git-LFS 其实是利用全局钩子来关联 Git 与 LFS 的。当你的工程中也加了钩子时,这时候就要格外小心了。...其中,使用 Git-LFS 的方案是一种比较理想的选择。但在实际使用中,一定要小心处理 Git-LFS 可能带来的问题,希望本文的若干踩坑总结也能对读者有所帮助。
在本例中,我使用了 commit-msg 钩子,它能够在当前提交信息生效前修改此信息。钩子由一个参数调用,该参数是指向包含用户输入的提交消息的文件的路径。...这意味着,为了改变提交消息,我们只需要从文件中读取、修改其内容,然后写回调用挂钩的文件。 要创建git钩子,我们需要在 .git/hooks 路经下提供一个可执行脚本。...Git钩子可以全局设置,也可以基于单个repo设置。...我个人对这类脚本的偏好是基于单个repo设置,因为这样可以在出现问题时为您提供更多的控制和可见性,并且如果钩子开始失败,它会在它设置的repo中失败,而不是全局都失败。...在下面的截屏中,创建了两个分支,一个带有问题编号,一个没有,它们有着相同的提交信息。可以看出脚本运行正常,并且只在需要时才更改提交消息!
1、介绍 2、Git存储原理 2.1 目录结构 2.2 提交内容 2.3 如何彻底删除一个文件 3、解析Object存储方式 4、处理大文件 4.1 大文件的产生 4.2 寻找大文件的ID 4.3...的目录过大,从git进行版本控制底层存储出发,简要分析Git目录过大的原因,以及如何处理 2、Git存储原理 2.1 目录结构 使用版本控制的人都会知道,不管是svn还是更为流行的git,整个工程目录下...HEAD:表示当前本地签出的分支 hooks:git钩子目录,关于钩子的使用可以参考我之前的文章 利用Git钩子实现代码发布 index: 存储缓冲区GitExtensions中的stage...4、处理大文件 4.1 大文件的产生 由上面的详细分析流程可以看出,git会为每一个提交到版本控制的文件进行追踪,那么大文件究竟如何产生呢?...50M my-repo.git # 删除文件夹下所有的文件 $ java -jar bfg.jar --delete-folders doc my-repo.git 7、小结 本文分析了git底层版本控制的存储实现
su git cd ~ mkdir .ssh cd .ssh vim authorized_keys authorized_keys 文件的内容就是我们本地复制的秘钥。...上面的操作后,这两个文件的用户和用户组都是git . 做完上面这些,切换到git 用户操作。...创建一个新的 git 钩子,用于自动部署 在 /var/repo/blog.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive。.../bin/bash git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f 增加post-receive 文件的写权限...,所以升级一下本地git 版本,在git base 中执行 $ git update-git-for-windows ?
漏洞一、逻辑错误导致权限绕过 这是本漏洞链的导火索,其出现在Git LFS的处理逻辑中。...Git LFS是Git为大文件设置的存储容器,我们可以理解为,他将真正的文件存储在git仓库外,而git仓库中只存储了这个文件的索引(一个哈希值)。...这样,git objects和.git文件夹下其实是没有这个文件的,这个文件储存在git服务器上。gitea作为一个git服务器,也提供了LFS功能。...在 modules/lfs/server.go 文件中,PostHandler是POST请求的处理函数: ? 可见,其中间部分包含对权限的检查: if !...然后随便找个项目,在设置中配置Git钩子。Git钩子是执行git命令的时候,会被自动执行的一段脚本。比如我这里用的pre-receive钩子,就是在commit之前会执行的脚本。
文件权限 chmod 400 /etc/sudoers 设置 git 账户密码 sudo passwd git 密码输入是看不到的 SSH连接 切换至 git 用户,创建 ~/.ssh 文件夹和 ~/....ssh/authorized_keys 文件 # 切换git用户 su git # 创建.ssh文件夹 mkdir ~/.ssh # 创建并编辑authorized_keys文件 vim ~/.ssh/...authorized_keys 按i进入编辑模式,把之前本地中生成的id_rsa.pub文件中的公钥复制进去,保存退出 如果复制不方便,可以将本地id_rsa.pub文件上传到.ssh文件夹并重命名为authorized_keys...编辑一个 Git 钩子 vim /var/repo/hexo.git/hooks/post-receive 按i进入编辑模式,添加下面的代码,然后保存退出 #!...6 安装Hexo 在本地创建一个空文件夹,这个文件夹要长期保留避免移动 在该文件夹内打开CMD命令行,使用 npm 安装 Hexo npm install -g hexo-cli 初始化博客程序 hexo
Git Hook 简介 什么是 Git Hook Git Hook 是 Git 提供的一种机制,允许在特定的 Git 操作(如提交、推送、合并等)前后执行自定义脚本。...如何使用 Git Hook 使用 Git Hook 进行自动化操作非常简单,下面是基本的步骤:找到 .git/hooks 目录在 Git 项目的根目录下,有一个隐藏的 .git 文件夹,里面包含一个 hooks...pre-commit.sample 里有默认的文件内容,我们可以选择性的删除或修改。编写钩子逻辑在钩子脚本中,你可以编写任何 shell 脚本或命令。...-w:直接修改文件,而不是只输出格式化后的代码。Git Hook 集成: 可以将 gofmt 集成到 pre-commit 钩子中,在每次提交之前自动格式化代码:#!...能够发现代码中的潜在问题、错误、性能瓶颈等。可配置,允许开发者根据项目需求启用或禁用特定的检查。
这篇教程将展示如何使用 Python 和 Flask 框架来搭建一个简单的持续部署(CD)服务。...在这个例子中的持续部署服务是一个简单的 Flask 应用,其带有接受 GitHub 的网络钩子webhook请求的 REST 端点endpoint。...为了验证请求,服务需要在本地计算签名并与请求头中收到的签名做比较。这可以由 hmac.compare_digest 函数完成。 自定义钩子逻辑 在验证请求后,现在就可以处理了。...这篇教程使用 GitPython 模块来与 git 仓库进行交互。GitPython 模块中的 Repo 对象用于访问远程仓库 origin。...git 仓库或者使用你自己的 git 仓库: 1 git clone https://github.com/cverna/git...
领取专属 10元无门槛券
手把手带您无忧上云