有时候gitignore没做好,一不小心就又进来一个二进制文件 在重复了N次Google之后,还是记一下吧 首先通过rev-list来找到仓库记录中的大文件: 1 git rev-list --objects...--all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}...')" 然后通过filter-branch来重写这些大文件涉及到的所有提交(重写历史记录): 1 git filter-branch -f --prune-empty --index-filter '...git rm -rf --cached --ignore-unmatch your-file-name' --tag-name-filter cat -- --all 再删除缓存的对象,顺便瘦身一下:...1 2 3 git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog
选择对应分支 git checkout -b 2....删除git的.idea文件 git rm --cached -r .idea # 如果没有git忽略文件的话,操作: ①配置.gitignore文件(新建/编辑) echo '.idea' >> .gitignore...②将.gitignore文件上传到远程仓库 git pull git add .gitignore git commit -m 'edit .gitignore' git push origin master...3.同步到远程仓库 git commit -m 'delete .idea' git push (adsbygoogle = window.adsbygoogle || []).
在使用Git的过程中,有时可能会有一些误操作 比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支 结果造成本地(远程)的分支或某些...reflog是git提供的一个内部工具,用于记录对git仓库进行的各种操作 可以使用git reflog show或git log -g命令来看到所有的操作日志 恢复的过程很简单...通过git branch recover_branch[新分支] commit_id 来建立一个新的分支 这样,我们就把丢失的东西给恢复到了recover_branch分支上了。...Q:怎样找回历史版本中删除的文件?.../Linux/2014-09/106231.htm Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm Git
删除大文件 4.4 按照pack文件直接操作 5、大文件存储的正确方式 6、其他解决方案 7、小结 1、介绍 Git作为一个分布式的版本控制工具,在每天高频次的使用中难免遇到一些问题 本文围绕git...我们在提交前移除了 test.py 文件, 这个文件便从Git的所有记录中完全消失了 3、解析Object存储方式 为了一步步熟悉Object存储的方式,这里在本地创建一个空的git仓库,且objects...一般不用输入整个Hash,输入前几位即可 当前分支的对象引用保存在HEAD文件中,可以查看该文件得到当前HEAD对应的branch,并通过branch查到对应的commit对象 # cat .git/HEAD...该命令可以指定只显示某个引用(或分支)的上下游的提交 --objects 列出该提交涉及的所有文件ID --all 所有分支的提交,相当于指定了位于/refs下的所有引用 verify-pack...=now --aggressive # 推送上去 # 此推将更新远程服务器上的所有refs分支 $ git push 其他用法 # 删除所有的名为'id_dsa'或'id_rsa'的文件 $ java
为了演示这点,往 test 仓库中加入一个大文件,然后在下次提交时将它删除,接着找到并将这个文件从仓库中永久删除。...而在这次提交之前仅用了 2K 左右 ── 显然在这次提交时删除文件并没有真正将其从历史记录中删除。...git.tbz2 接下来要将该文件从历史记录的所有 tree 中移除。...开始的所有 commit 才能将文件从 Git 历史中完全移除。...不能用 rm file 命令来删除一个特定文件,而是必须用 git rm --cached 来删除它 ── 即从索引而不是磁盘删除它。
接下来,假设你丢失的提交因为某些原因不在引用日志中 - 我们可以通过移除recover-branch 分支并删除引用日志来模拟这种情况。...如果你从其他的版本控制系统迁移到 Git 时发现仓库比预期的大得多,那么你就需要找到并移除这些大文件。 警告:这个操作对提交历史的修改是破坏性的。...为了演示,我们将添加一个大文件到测试仓库中,并在下一次提交中删除它,现在我们需要找到它,并将它从仓库中永久删除。...7b30847 add git tarball 现在,你必须重写 7b30847 提交之后的所有提交来从 Git 历史中完全移除这个文件。...可以从 size 的值看出,这个大文件还在你的松散对象中,并没有消失;但是它不会在推送或接下来的克隆中出现,这才是最重要的。
ulimit -n 9999999 # 解决可能出现的报错too many open files的问题 ulimit -n # 查看改成9999999了没 # 遍历拉取所有分支的 lfs 最新文件,并追踪远端分支到本地...为例,找到 master 分支上提交的并且只有一个父的提交节点(如果提交节点有多个父,那么所有父节点都要处理),该节点必须是所有分支的父节点,否则需要考虑其他分支特殊处理的情况,该情况后面的【特殊分支处理...清理截断日期前的所有历史记录,并将截断节点的提交信息修改 注意此步骤要谨慎处理,因为这步会真正地删除提交记录。...特殊分支处理 说明:以上历史记录裁剪并删除历史提交记录执行完后,对于基于截断提交节点前的提交节点创建出来的分支或者其子分支会出现文件被删除或者整个分支被删除的情况。...项目数据同步:同步项目成员和权限相关的数据、保护分支规则组到新仓库。 自己工蜂适配(可以提前进行)。对照老工蜂的所有配置,在新工蜂上手动同步修改。
git reset 命令 我们知道git reset可以将当前的内容回滚到指定的某次提交,分为两个模式: #将内容回滚到commitid这次提交,并删除所有‘commitid’之后的提交历史内容 git...reset --hard commitid #将内容回滚到commitid这次提交,并保留所有‘commitid’之后的内容 git reset --soft commitid 由于提交大文件之后...git reset --soft命令一样是无法将提交记录从仓库中抹掉的,虽然通过reset之后,大文件的提交记录在git log中已经查找不到,但实际上,这个记录并不会真正的从仓库中删除,只要能找到commit...id,依然可以从仓库中恢复该提交历史。...删除命令 如果所有分支都是unchanged说明要么是该分支没有要删除的文件,要么是删除文件的路径不对。 执行以后命令以后,你会发现本地目录中的.git文件并不会马上就变小,而是与原来是一样的!
那么如何把这个压缩包彻底从 git 删除? 如果需要删除 git 的历史记录,使用方法很简单,请看 Git如何永久删除文件(包括历史记录) - shines77 - 博客园 。...当然这个方法需要很长时间,因为提交大文件的时间不长,所以可以使用walterlv的方法 彻底删除 Git 仓库中的文件避免占用大量磁盘空间 - walterlv 于是远程仓库删好了,但是本地仓库还是有小伙伴拉下来...git gc --prune=now 第一句代码git fetch -f -p的作用就是从本地拿到远程最新分支,覆盖本地存放的远程分支 第二句实际上因为主要开发分支就是 dev 分支,小伙伴就是把大文件合并到这个分支...这个命令需要所有小伙伴执行,不然有一个小伙伴提交了包含大文件的提交,那么刚才做的就是白做了。...需要说明,git 如果提交一个文件,然后删除他,继续提交,那么这个文件是存在 git 中,需要使用特殊的命令才可以删除。
git-lfs 软件包在 Homebrew,MacPorts,dnf 和packagecloud中都是可用的;或者 b. 从项目网站下载并安装Git LFS; c....prune 命令从本地 Git LFS 缓存中删除文件: $ git lfs prune ✔ 4 local objects, 33 retained Pruning 4 files, (2.1 MB)...✔ Deleted 4 files 这将删除所有被认为是旧的本地 Git LFS 文件。...从服务器删除远端 Git LFS 文件 Git LFS 命令行客户端不支持删除服务器上的文件,因此如何删除他们取决于你的托管服务提供商。...在 Bitbucket Cloud 中,你可以通过仓库设置> Git LFS查看和删除 Git LFS 文件: 请注意,每个 Git LFS 文件均通过其 SHA-256 OID 进行索引;通过 UI
上边三种类型的对象组成了Git中的基本数据单元,通过这些对象的组合和链接,才构建出完整的提交历史,并跟踪代码库中每个文件的变化历史。...图片4、删除大文件使用--delete-files命令逐一的将大文件删除,如果提示分支是被保护的可以加上--no-blob-protection命令执行。...那么操作起来就得小心一点了,毕竟2000star,别把仓库弄嘎了,既要清除一个分支上的所有提交记录,同时又不能删除这个分支本身,其实我们可以迂回一下。...相当于新建了一个干净的空分支,并让该分支指向一个全新的根节点。...git add -Agit commit -am "Initial commit"接着删除旧的分支,并把新建的分支名改成旧分支名称,推到远程仓库就行了。
我们可以先从 develop 分支切换到 test 分支中去,然后从 test 分支基础 上中新建一个 tmp 临时开发分支,在 tmp 分支中开发功能。...git commit -m "new version" # 然后将 develop 分支删除 git branch -D develop # 删除后将 new_branch 分支重命名为 develop...并强制刷新到所有分支,这里推送到远程仓库需要有强制推送权限。...执行删除 vendor.zip 文件,在所有历史版本中的记录 git filter-branch --index-filter 'git rm --cached --ignore-unmatch vendor.zip...' 在上面的命令中我们删除了文件,但是在 Git 的 repo 里面还记录了这些文件的信息,这些信息也会占用一定的空间,我们继续清除这些信息,并收回存储空间 rm -rf .git/refs/original
$ git rm HelloWorld.js # 移除子目录中的文件 $ git rm /pather/to/the/file/HelloWorld.js # 删除工作区文件,并且将这次删除放入暂存区...# 列出所有远程分支 $ git branch -r # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git...$ git br -d # 强制删除某个分支 (未被合并的分支被删除的时候需要强制) $ git br -D 检出 将当前工作空间更新到索引所标识的或者某一特定的工作空间...branch ; git checkout " $ git checkout -b newBranch 远程同步 远程同步的远端分支 # 下载远程仓库的所有变动 $ git fetch...push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag] pull 从远端版本库合并到当前分支 # 从远端origin
所有的 feature 和 bug fix 的开发工作都应该在一个新的分支上完成,一般从 develop 分支上创建新分支。使用 git checkout -b 创建并切换到新分支。...它可以帮助我们格式化源代码(C++,Python),在提交(commit)前自动检查一些基本事宜(如每个文件只有一个 EOL,Git 中不要添加大文件等)。...5 开始开发 在本例中,我删除了 README.md 中的一行,并创建了一个新文件。...的最新代码并更新当前分支。...也可以使用 git push origin :分支名 删除远程分支,如: ➜ git push origin :my-cool-stuff 12 删除本地分支 最后,删除本地分支。
branch)是对远程仓库中的分支的索引。...git remote rm命令会从你的本地版本库中删除给定的远程版本库及其关联的远程追踪分支。...要只从你的本地版本库删除一个远程跟踪分支,使用这样的命令: $ git branch-r -d origin/dev 远程版本库中可能已经有分支被其他开发人员删除了(即使这些分支的副本可能还遗留在你的版本库中...同样,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。...要更新所有分支,命令可以简写为: $ git fetch 举例:将远程版本库上的修改同步到本地 git fetch origin master 会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去
本文由腾讯云+社区自动同步,原文地址 http://blogtest.stackoverflow.club/git-commands/ 曾经使用过的比较实用的命令 推送不同名的本地分支到远程分支 git...取消文件追踪 git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地, 但是远程仓库的内容会被删除 删除分支 重命名分支 有时候在其他分支上开发了太多功能...首先删除分支 git branch -D branch_name 然后重命名分支 git branch -m branch_old_name branch_new_name 撤销git reset git...git checkout a 便可撤销对文件a的修改 如果被git add到索引区,但没有做git commit提交1) 将a从索引区移除(但会保留在工作区) git reset HEAD a git...这时可以使用git stash命令。 暂存更改到堆栈中 git stash 从堆栈中弹出更改 git stash apply
//创建分支Dev git checkout dev//切换到Dev git checkout -b dev //创建分支并切换过去 git branch -d dev //删除分支 git branch...从两分支共同节点开支,全部取消作业分支branch1的commit打包成补丁,然后把分支1之后所有的提交合并过来, 作业分支的补丁放到后面,也就是作业分支基线变了,变到了分支1后面。...//恢复指定索引的暂存,恢复后删除原来暂存信息 git stash apply {i} //恢复指定索引的暂存,恢复后不会删除原来暂存信息 git stash drop {i}//删除指定索引的暂存...,不撤销git add file --hard 删除工作空间的改动代码,撤销commit且撤销add 会改变分支的状态,删除commit节点; git restore 是关于从索引或另一个提交还原工作树中的文件...此命令不会更新您的分支。该命令还可用于从另一个提交还原索引中的文件。
# 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p 删除 rm 和上面的 add 命令相反,从工作空间中去掉某个文件 # 移除 HelloWorld.js...$ git rm HelloWorld.js # 移除子目录中的文件 $ git rm /pather/to/the/file/HelloWorld.js # 删除工作区文件,并且将这次删除放入暂存区...# 列出所有远程分支 $ git branch -r # 新建一个分支,但依然停留在当前分支 $ git branch [branch-name] # 新建一个分支,并切换到该分支 $ git...branchName # 新建一个分支,并且切换过去,相当于"git branch ; git checkout " $ git checkout -b newBranch 远程同步 远程同步的远端分支...push [remote] --tags # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag] pull 从远端版本库合并到当前分支 # 从远端origin
/repo的父目录或父目录的子目录. sync ---- 下载新的更改并更新本地环境中的工作文件.如果你运行repo sync没有任何参数,它将同步所有项目的文件....当运行repo sync,这是发生了什么事: 如果项目从未同步过,那么repo sync相当于git clone. 远程仓库中的所有分支复制到本地项目目录中....如果项目已经同步过一次,那么repo sync相当于: git remote update git rebase origin/ 其中是本地项目目录中当前检出的分支.如果本地分支没有跟踪远程仓库中的分支...download ---- repo download 从审查系统中下载指定的更改,并使其在项目的本地工作目录中可用....-v:显示命令写入stderr的消息 prune ---- repo prune [] 修改(删除) 已经合并的主分支 start ---- repo start [] 从manifest
领取专属 10元无门槛券
手把手带您无忧上云