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

解决git不小心提交大文件导致无法提交问题

之后找到一种较为暴力解决方法: git stash 在网上找到关于这段命令(git 储藏)使用场景: 发现有一个类是多余,想删掉它又担心以后需要查看它代码,想保存它但又不想增加一个提交。...使用git时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改bug,我们往往会把完成一半代码...其实如果我们不想提交完成一半或者不完善代码,但是却不得不去修改一个紧急Bug,那么使用git stash就可以将你当前未提交到本地(和服务器)代码推入到Git栈中,这时候你工作区间和上一次提交内容是完全一样...,所以你可以放心修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply将以前一半工作应用回来。...解决这个问题办法就是git stash命令。储藏(stash)可以获取你工作目录中间状态——也就是你修改过被追踪文件和暂存变更——并将它保存到一个未完结变更堆栈中,随时可以重新应用。

2.6K30

git为什么不擅长处理大文件

,一个很好解决方案是使用git filter-branch。...所以对这些文件使用 "delta off",以避免不必要delta压缩工作作为重新打包一部分。...这种技术可以通过明确说明你要填充哪些文件夹来保持工作目录干净。不幸是,它并不影响整个本地仓库大小,但如果你有一棵巨大文件夹树,那就很有帮助。 涉及命令是什么?下面是一个例子。...echo src/ ' .git/info/sparse-checkout 按照规定读取树。 完成上述工作后,你可以回去使用正常 git 命令,但你工作目录将只包含你上面指定文件夹。...image.png Git LFS是无缝:在你工作副本中,你将只看到你实际文件内容。这意味着你可以在不改变现有的Git工作流程情况下使用Git LFS;你只需、编辑、、和正常工作

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

Git目录为什么这么大

目录过大,从git进行版本控制底层存储出发,简要分析Git目录过大原因,以及如何处理 2、Git存储原理 2.1 目录结构 使用版本控制的人都会知道,不管是svn还是更为流行git,整个工程目录下...HEAD:表示当前本地签出分支 hooks:git钩子目录,关于钩子使用可以参考我之前文章 利用Git钩子实现代码发布 index: 存储缓冲区GitExtensions中stage...4个部分: 工作目录快照名称(一个哈希值) 一条评论/注释 提交者信息 父提交哈希值 每一个提交Commit相当于一个Patch应用在之前项目上,借此一个项目可以回到任何一次提交时文件状态...`" --tag-name-filter cat -- --all # 或者直接删除目录所有文件 # git filter-branch --force --index-filter 'git rm...这样大文件既不会污染我们 .git 目录,也可以让我们更方便使用,这里不多做原理展开, 简单来说操作方法如下 # 1.开启lfs功能 # git lfs install # 2.追踪所有后缀名为“.

1.2K10

Git 基础命令

-m [message] #提交工作区自上次 commit 之后变化,直接到仓库区 $ git commit -a #提交时显示所有 diff 信息 $ git commit -v #使用一次新 commit...$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD # 使一个子目录作为新目录:假设已经从另一个源代码控制系统中导入,并且有几个没意义目录...如果想要让 trunk 子目录作为每一个提交项目根目录filter-branch 也可以帮助你那么做,再在新项目根目录是 trunk 子目录Git 会自动移除所有不影响子目录提交。...$ git filter-branch --subdirectory-filter trunk HEAD # 在开始工作时忘记运行 git config 来设置你名字与邮箱地址,或者你想要开源一个项目...需要小心是只修改你自己邮箱地址,所以使用 --commit-filter 来修改: $ git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_EMAIL

45630

Git修改已提交commit1 本地修改

1.5 分离某次提交 变基命令还能分离提交,这里不描述,详情查看后面的参考链接 终极手段 git还提供了修改版本历史“大杀器”——filter-branch,可以对整个版本历史中每次提交进行修改,可用于删除误操作提交密码等敏感信息...删除所有提交中某个文件 git filter-branch --treefilter 'rm -f password.txt' HEAD 将新建目录作为所有提交目录 git filter-branch...回退到指定提交以后提交都会从提交日志上消失 注意:工作区和暂存区内容都会被重置到指定提交时候,如果不加--hard则只移动HEAD指针,不影响工作区和暂存区内容。... 这个方法可以对回退操作进行回退,因为这时候git log命令已经找不到历史提交hash值了。...但是除了git revert可以直接push,其他都会对原有的版本历史修改,只能使用强制push git push -f 总结 git commit --amend

2K30

公司敏感数据被上传Github,吓得我赶紧改提交记录

这件事导致公司对所有员工进行了一次数据安全培训。对于这个事我相信,有点工作经验的人都不会故意去上传这些敏感文件,多数应该是误操作导致。...config --global -l 特定仓库 如果你只想修改某个特定仓库用户信息,可以在特定仓库目录下进行如下操作,Git会将设置得用户名和邮箱仅应用于当前仓库。...git push origin master 批量修改 Git官网提供了很多种修改提交记录信息方法,这里主要介绍下filter-branch,它可以通过脚本方式批量修改历史提交记录信息。...全局修改邮箱地址; 从每一个提交中移除一个文件; 使一个子目录做为新目录 用法 历史提交记录中有很多用户名xiaofu提交记录,现在使用filter-branch批量将他们改写成程序员小富。...还有GitHub别留太多个人信息,手机号邮箱就别放了,头像也别傻乎乎放个自己大头贴,给自己留点回旋余地。核心思工作和生活要隔离!!!

13210

7.6 Git 工具 - 重写历史

这个命令是 filter-branch,它可以改写历史中大量提交,除非你项目还没有公开并且其他人没有基于要改写工作提交做工作,你不应当使用它。 然而,它可以很有用。...为了从整个提交历史中移除一个叫做 passwords.txt 文件,可以使用 --tree-filter 选项给 filter-branch: $ git filter-branch --tree-filter...如果想要让 trunk 子目录作为每一个提交项目根目录filter-branch 也可以帮助你那么做: $ git filter-branch --subdirectory-filter trunk...Git 会自动移除所有不影响子目录提交。...需要小心是只修改你自己邮箱地址,所以你使用 --commit-filter: $ git filter-branch --commit-filter ' if [ "$GIT_AUTHOR_EMAIL

65360

从仓库中移除敏感信息

要从仓库历史记录中完全删除不需要文件,你可以使用 git filter-branch命令或 BFG Repo-Cleaner。...使用 filter-branch 警告:如果你在暂存(stash)更改后运行 git filter-branch,你将无法使用其他暂存命令检索你更改。...为了说明 git filter-branch 如何工作,我们将向你展示如何从仓库历史记录中删除具有敏感数据文件,并将其添加到 .gitignore 中以确保它不会被意外重新提交。 1....切换到仓库工作目录。 cd YOUR-REPOSITORY 3....经过一段时间,你确信 git filter-branch 没有意外副作用,你可以强制你本地仓库中所有对象被解除引用和垃圾收集,使用下面的命令(使用Git 1.8.5或更新版本): git for-each-ref

91420

公司敏感数据被上传Github,吓得我赶紧改提交记录

这件事导致公司对所有员工进行了一次数据安全培训。对于这个事我相信,有点工作经验的人都不会故意去上传这些敏感文件,多数应该是误操作导致。...--global -l特定仓库如果你只想修改某个特定仓库用户信息,可以在特定仓库目录下进行如下操作,Git会将设置得用户名和邮箱仅应用于当前仓库。...git push origin master批量修改Git官网提供了很多种修改提交记录信息方法,这里主要介绍下filter-branch,它可以通过脚本方式批量修改历史提交记录信息。...全局修改邮箱地址;从每一个提交中移除一个文件;使一个子目录做为新目录用法历史提交记录中有很多用户名xiaofu提交记录,现在使用filter-branch批量将他们改写成程序员小富。...git push origin masterGitHub工具管理GitHub项目,我推荐大家使用GitHub官方Git客户端工具GitHub Desktop,这个工具专门用来管理GitHub仓库,洁面简洁使用也很方便

25010

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

本文主要介绍如何使用 git filter-branch 命令删除 Git 仓库中敏感文件及其历史记录。...背景 因为我开一个新项目的时候习惯先使用私有仓库,当完善差不多时候再转为公开,私有库就随便了些,可能存在一些不合适公开一些信息,所以需要在转为公开仓库前检查删除一些内容。...2.3 运行git filter-branch 进入仓库目录使用 git filter-branch 命令删除敏感文件及其历史记录。...git filter-branch --force --index-filter "git rm --cached --ignore-unmatch config/your-sensitive-file.json...如果你是一个人使用,那就无所谓了。 3. 结论 本文介绍了如何使用 git filter-branch 命令手动删除Git仓库中敏感文件及其历史记录。

23040

Git 修改历史 commits 中用户名和邮箱

步骤 确认本地全局邮箱/用户名 查看仓库历史提交信息 批量修改历史记录中信息 将修改结果推送到远程 1.确认本地全局邮箱/用户名 使用下面两个命令查看 git 在本地全局邮箱和用户名。...2.查看仓库历史提交信息 git clone 你要修改仓库,进入该仓库目录,打开 git bash 界面,执行 git log 命令查看历史提交信息(重点关注 Author)。...git filter-branch -f --env-filter ' OLD_EMAIL="原来邮箱" CORRECT_NAME="现在名字" CORRECT_EMAIL="现在邮箱" if [...Linux/Mac下可以写个脚本 在项目根目录下创建git-email.sh,写入下面这段代码: #!.../bin/sh git filter-branch --env-filter ' OLD_EMAIL="原来邮箱" CORRECT_NAME="现在名字" CORRECT_EMAIL="现在邮箱

3.6K20

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

本文作者:0x584A(来自信安之路作者团队) 本章教大家如何使用 GIT 进行一些关于已提交历史修改、删除操作。...比如碰到下列情况时,如何使用 GIT 实现想要操作: 1、代码或日志中注释误提交了,怎么修改它? 2、我想丢弃指定提交历史可不可以? 3、在提交很久历史记录中存在敏感信息,如何修改或删除它?...阅读本文章时默认大家都具备使用 GIT 进行基本操作水平。...核弹级选项: filter-branch 官方文档上实例:要从整个历史中删除一个名叫 password.txt 文件,你可以在 filter-branch使用 --tree-filter 选项...-- --all passwords.txt 替换成实际要删除文件或相对目录即可。

2.2K00

Git+Gerrit如何永久删除历史文件(大文件私密文件)

git filter-branch 1)前面两种修改方式都是我们平时所熟悉使用频率比较高删除某些文件或者提交记录方式,但这些方式实际上都是生成了新提交记录,并不会修改或者删除我们提交历史...Git这么强大,肯定是存在可以永久删除历史记录命令,找了一圈,发现确实有“后悔药”命令,那就是git filter-branch,通过以下命令,就可以永久删除你想要删除任何文件: git filter-branch...不是说好了,可以永久删除记录?摔!不是说好了,不能再通过commit id找回原来大文件了吗?摔!别急,接下来就告诉你为什么。...-aggressive --prune=now 执行以上命令,就会发现.git目录变小了。...这是使用错误推送命令: git push origin HEAD:refs/for/dev --force 推送到gerrit没效果,那么直接推送到git远程仓库呢? ?

2.5K20

防止 Git 泄漏 5 种最佳做法

无数开发人员正在使用 Git 进行版本控制,但是许多开发人员对 Git 工作方式并没有足够了解。有些人甚至将 Git 和 Github 用作备份文件工具。...这些做法导致 Git 仓库中信息遭到泄露。每天都有数千个新 API 或加密密钥从 GitHub 泄漏出去。[2] 我在信息安全领域工作了三年。...gitignore 是一个 Git 配置文件,它列出了不会被存入 Git 仓库文件或目录。...将 master 设置为受限制分支有助于我们执行代码审查工作。 ? 快速并且正确地修复它 即使使用了上面提到工具和方法,却仍然可能会发生错误。...git filter-branch 更快、更简单用于删除敏感数据替代方法。

1.8K10

忘改 git config user,用公司邮箱提交到私人github,如何挽救?

今天给大家介绍一个方法,可以批量替换 commit 记录中错误用户信息。根据邮箱来寻找,可以修改为新用户名和新邮箱。适用于linux MacOS。操作步骤第一步cd到git项目目录下。...确保当前工作区干净。...执行以下代码,记得替换邮箱和名字:git filter-branch --env-filter 'OLD_EMAIL="错误邮箱"CORRECT_NAME="新用户名"CORRECT_EMAIL="...当你执行第一次「第一步」后,准备执行第二次「第一步」时,需要先执行下面的脚本,再开始下次批量替换:git filter-branch -f --tree-filter -f 'rm -f test' -...方案一:创建个人项目目录,针对个人目录配置git configgit 提供了这种能力,非常方便!同时支持Windows Mac Linux。

4.9K132

10.7 Git 内部原理 - 维护与数据恢复

为了获得指定引用正确 SHA-1 值,Git 会首先在 refs 目录中查找指定引用,然后再到 packed-refs 文件中查找。...你需要找出最后一次提交 SHA-1 然后增加一个指向它分支。 窍门就是找到最后一次提交 SHA-1 - 但是估计你记不起来了,对?...最方便,也是最常用方法,是使用一个名叫 git reflog 工具。 当你正在工作时,Git 会默默地记录每一次你改变 HEAD 时它值。 每一次你提交或改变分支,引用日志都会被更新。...为了执行这个操作,我们要使用 filter-branch 命令,这个命令在 重写历史 中也使用过: $ git filter-branch --index-filter \ 'git rm --ignore-unmatch...最后,使用 filter-branch 选项来重写自 7b30847 提交以来历史,也就是这个问题产生地方。 否则,这个命令会从最旧提交开始,这将会花费许多不必要时间。

79020
领券