Git如何删除hp打印文件历史记录录中的大文件详解

Better Me的博客
git 历史提交记录log(git GUI)图文详解
1、以openstack nova为例:
2、clone nova:
3、使用git gui打开:
4、打开git gui的提交日志历史:
5、从init commit 开始,分析:
点击initial commit时候,下面出现该提交状态信息:
SHA1:为当前状态的唯一标示码
Child:标示该状态有一子状态
Branchs:该状态下延伸出的分支
接下来再一次举例说明:
如上图大家可以看到:
Parent:表示该状态是由哪个状态延伸过来
Child:此处发现有三个孩子,这是因此从该处往后面延伸,与当前阶段的直接连线点有三个。
当前状态的tag为
Follows:前序tag为
Precedes:后续的tag为
6、关于git gui 历史提交的 简单使用:
从上图可知,右边的每一行文字描述,对应左边的一个小蓝点。(每一个小蓝点则代表一次提交或者一个tag),
因此点击右边文字描述he点击其对应的commit小蓝点效果一样。
注:不要别那些向上向下的箭头干扰,那个与右边的文字描述没有对应关系。
那么小箭头有什么作用呢?
点击上述橙色箭头,下面出现一个Parent、两个Children。
寻找Parent56a58cc42100ffdcbf6d10f52637b:
回到图6-1,
寻找Children:b10dac3ae0e8be0fcd6:
从上图可以发现,Children跳转到了后续一个分支上去了。而然在此分支开始处有一个向下的箭头。
到此处就能很清楚明白箭头的作用了。
向上箭头:说明当前分支有孩子分支,在其他地方(只是图上不方便画出来)
向下箭头:说明当前分支是从之前某个分支延伸而来。
7、以github opentack nova为基础分析,得出最新master分支、openstack juno dev、stables/juno
、stable/ice、30wish、tag 之间的关系如下图。
其实wish、stable/ice两个分支是从tag 衍生出去、open juno dev 从2014.1.rc1衍生出去。
stable/juno从衍生出去。
没有更多推荐了,git 删除分支和回滚的实例详解
转载 &更新时间:日 09:41:54 & 投稿:lqh
这篇文章主要介绍了git 删除分支和回滚的实例详解的相关资料,希望通过本文大家能理解掌握这部分内容,需要的朋友可以参考下
git 删除分支和回滚的实例详解
【git 删除本地分支】
git branch -D br
【git 删除远程分支】
git push origin :br (origin 后面有空格)
git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id
【本地代码库回滚】:
git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除
git reset --hard HEAD~3:将最近3次的提交回滚
【远程代码库回滚】:
这个是重点要说的内容,过程比本地回滚要复杂
应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
操作步骤:
1、git checkout the_branch
2、git pull
3、git branch the_branch_backup //备份一下这个分支当前的情况
4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id
5、git push origin :the_branch //删除远程 the_branch
6、git push origin the_branch //用回滚后的本地分支重新建立远程分支
7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支&
【查看分支】
git branch -a
【创建本地分支并推送到远程】
git branch test
git push origin test
如有疑问请留言或者到本站社区交流讨论,以上就是对git 回滚及删除分支的详解,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具安卓开发路上的点点滴滴
git使用之三——.git文件夹详解
.git文件夹
.git文件夹是git init后在当前目录生成的一个管理git仓库的文件夹,这里包含所有git操作所需要的东东,请看:
下面我们就来详细介绍下这里面都藏了些什么。
hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他git托管系统会经常用到hook script。
2 info:包含仓库的一些信息
3 logs:保存所有更新的引用记录
比如有个HEAD文件,里面这样子:
4 objects:该目录存放所有的Git对象,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名。
比如前面log里的HEAD文件里有个哈希值是ccc9ab4ea7b96e28828af
我们找到54文件夹,打开,这样子:
5 refs:具体的引用,Reference Specification,这个目录一般包括三个子文件夹,heads、remotes和tags,比如,heads中的master文件标识了项目中的master分支指向的当前commit,其他类似。
6 COMMIT_EDITMSG:保存最新的commit message,Git系统不会用到这个文件,只是给用户一个参考
7 config:这个是GIt仓库的配置文件
8 description:仓库的描述信息,主要给gitweb等git托管系统使用
9 index:这个文件就是我们前面提到的暂存区(stage),是一个二进制文件
10 HEAD:这个文件包含了一个分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent,什么是引用呢,你可以理解为指针,哪儿都可以指,但是不能指向没有的东西哦。详细介绍请看这里:
因为git是根据哈希值索引的,计算机内部这样处理,为了方便我们使用,所以出现了引用的概念,Git系统中的分支名、远程分支名、tag等都是指向某个commit的引用。比如master分支,origin/master远程分支,命名为V1.0的tag等都是引用,它们通过该保存某个commit的SHA1哈希值指向某个commit的点。
11 ORIG_HEAD:HEAD指针的前一个状态
到这里对这个应该有很深的了解了,你自己挨个打开看看,就会更加深入,谢谢。
悦分享,越快乐^_^
欢迎交流,转载请注明出处,谢谢!
没有更多推荐了,有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。
============一些牢骚============
于是自然想要告诉git把这些文件忽略,我们当然会想到去Google,输入本文标题这个关键字(一部分人会直接去看document),然后当然会有很多解决方案,多数告诉我们在.gitignore文件中添加待忽略的文件目录列表;照做,问题很有可能依然存在。
再Google,这次可能找到了help.github.com或stackoverflow上,看到一些原文的讨论;其中讲到在向.gitignore添加忽略文件之前一定要保证那些文件未被git跟踪,即先使用命令git rm --cached filename将它们从索引中删除。终于看到靠谱的解决方案不禁暗喜,照做--敲一下git status试试,问题很有可能仍然存在。
太多中文&技术资料&是复制照搬过来的,转载的人自己并没有试过;稍好一点的在英文社区看到了相关讨论,随手翻译了一下发过来,可能存在理解上的问题或者忽略了一些细节,导致依然没办法解决问题。
所以搜索引擎给出的中文的结果,有很多对解决问题丝毫无用的。Git忽略文件是很普遍也应该是很简单的一个问题,但多数帖子根本连这个问题都没搞明白,于是引发了这一系列的牢骚。遇到问题要多思考,想想问题的本质,解决方法的原理;最重要的是要切实地去动手做。
============牢骚结束============
解决方案:
1. 本地仓库忽略
本地仓库的文件忽略规则可以在 .git/info/exclude 文件中添加。这些忽略的文件不会提交到共享库中,因而不会被协作者所共享。
# git ls-files --others --exclude-from=.git/info/exclude# Lines that start with '#' are comments.# For a project mostly in C, the following would be a good set of# exclude patterns (uncomment them if you want to use them):# *.[oa]# *~
2. 当前工作目录添加文件忽略
对于每一级工作目录,创建一个.gitignore文件,向该文件中添加要忽略的文件或目录。但在创建并编辑这个文件之前,一定要保证要忽略的文件没有添加到git索引中。使用命令git rm --cached filename将要忽略的文件从索引中删除。
--摘抄.gitignore的格式规范
& 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
& 可以使用标准的 glob 模式匹配。
& 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
& 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的数字)。
2.1 工作目录的每一层下级目录都可以有一个.gitignore文件,以说明当前目录下需要被git忽略的文件或目录
2.2 .gitignore文件 可以被提交到共享库中被协作者共享
3. 全局的.gitignore
可以通过创建~/.gitignore_global并添加到git全局配置以减少每层目录的规则重复定义。使用命令git config --global core.excludesfile ~/.gitignore_global 即可
.gitignore_global文件范例
# Compiled source #
###################
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
# Logs and databases #
######################
# OS generated files #
######################
.DS_Store?
.Spotlight-V100
ehthumbs.db
文件 .gitignore 的格式规范如下:
& 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
& 可以使用标准的 glob 模式匹配。
& 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
& 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的数字)。
我们再看一个 .gitignore 文件的例子:
# 此为注释 & 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
Two things to keep in mind with ignoring files:
First, if a file is already being tracked by Git, adding the file to&.gitignore&won&t stop Git from tracking it.
You&ll need to do&git rm --cached &file&&to keep the file in your tree and then ignore it.
Secondly, empty directories do not get tracked by Git.
If you want them to be tracked, they need to have something in them. Usually doing a&touch .gitignore&is enough to keep the folder tracked.
You can also open up&$GIT_DIR/info/exclude&($GIT_DIR&is usually your&.git&folder) and edit that file for project-only ignores. The problem with this is that those changes aren&t checked in, so use this only if you have some personal files that don&t need to be shared with others on the same project.
Your final option with ignoring folders is adding a per-user ignore by setting up acore.excludesfiles&option in your config file. You can set up a&.gitignore&file in yourHOME&directory that will affect all of your repositories by running this command:
git config --global core.excludesfile ~/.gitignore
Read up on the&&if you&d like to learn more about how ignores work. As always, if you have other ignore-related tips let us know in the comments.
git忽略文件有三种:
1、全局范围内有效的忽略文件
就是"版本库根目录/.git/info/exclude",全局范围内的所有忽略规则都以行为单位写在这个文件中;
2、局部范围内有效的忽略文件
就是.gitignore,这个忽略文件只对某一级目录下的文件的忽略有效;如果某一个目录下有需要被忽略的文件,那么就可以在该目录下手工地创建忽略文件.gitignore,并在这个忽略文件中写上忽略规则,以行为单位,一条规则占据一行;比较特殊的情况就是在版本库的根目录下创建一个忽略文件.gitignore,这时,这个.gitignore忽略文件就对版本库根目录下的文件有效,等价于全局范围内的忽略文件.git/info/
3、手工指定一个忽略文件,
该忽略文件中的规则和语法与前两种是一致的,随便哪一级目录都可以,只要加上对应的路径即可;&& 手工指定忽略文件的命令是:&& git config --global core.excludesfile /path/to/.gitignore&& 然后手工地在对应位置创建忽略文件.gitignore,并在该文件中写入忽略规则即可;
备注:这三种范围级别的忽略文件的内容格式和语法都是一致的;
.gitignor文件同样可以像其它文件一样加到项目仓库里( 直接用 git add .gitignore 和 git commit等命令),&
这样项目里的其它开发者也能共享同一套忽略 文件规则。
如果想要连.gitignore文件自己也忽略呢?一样的道理,只要在文件内加上.gitignore即可。
如果你想忽略规则只对特定的仓库起作用,你可以把这些忽略规则写到你的仓库下
.git/info/exclude 文件中,或是写在Git配置变量
core.excludesfile 中指定的 文件里。
有些Git命令也可在命令行参数中指定忽略规则,你可以在这里:gitignore 查看详细的用法。
github中不加入版本控制.gitignore设定
JAN 19TH, 2012
这几天研究github page,由于用jekyll本地测试时会生成_site文件夹,
所以需要把这个文件夹排除在外再提交到github,到底怎么设置呢?
这就需要用到.gitignore,即不加入版本控制,在git根目录下建立.gitignore,具体设定如下:
//忽略tmp.txt
//忽略所有log文件
//忽略tmp文件夹所有文件
log/**/*.log
//忽略log目录下的包括子目录下的所有log文件
其他的一些过滤条件
?:代表任意的一个字符
*:代表任意数目的字符
{!ab}:必须不是此类型
{ab,bb,cx}:代表ab,bb,cx中任一类型即可
[abc]:代表a,b,c中任一字符即可
[ ^abc]:代表必须不是a,b,c中任一字符
由于git不会加入空目录,所以下面做法会导致tmp不会存在
//忽略tmp文件夹所有文件
改下方法,在tmp下也加一个.gitignore,内容为
!.gitignore
还有一种情况,就是已经commit了,再加入gitignore是无效的,所以需要删除下缓存
git rm --cached ignore_file
这样就OK了。
阅读(...) 评论()git使用详解(上传、更新、删除、忽略)(mac) - 简书
git使用详解(上传、更新、删除、忽略)(mac)
宠辱不惊,闲看庭前花开花落;
去留无意,漫观天外云卷云舒。
当口袋里有了金币,代码库里全是代码,我想去听雨,一个人去听雨。
一、创建远程仓库,也就是在git上创建仓库
首页登陆Github,并选择创建
点击New repository
创建代码库
进入这个界面
复制这段代码:git remote add origin
后面会用到
这里注意用https,不用ssh
如果用ssh可能会报错
这里建议不用ssh
二、终端操作--第一次上传代码
第一步 初始化git
打开Mac电脑的终端,进入到要上传的文件夹,cd 到“目录”
空格一次后 将文件夹拽入终端生成路径,enter一下进入
初始化git仓库
再输入命令
要上传的文件
成功创建git仓库
注意如果没有.git文件,说明被隐藏了
显示隐藏:
第一步:打开「终端」应用程序。
第二步:输入如下命令:
defaults write com.apple.finder AppleShowAllFiles - killall Finder
第三步:按下「Return」键确认。
第二步 关联本地与git库
1. 提交到暂缓区
git commit -m '第一次提交代码'
引号内面填写详细描述
如果第一次使用,会提示输入github的账号密码,输入即可
3.关联远程github库
复制之前创建github仓库时复制的代码
git remote add origin https://github.com/chriseleee/text006.git
4.最精彩的一步:上传到github
git push -u origin master
上传会有一段时间
以上就算上传成功了
5.(优化)添加releases版本号
进入github仓库
发现没有releases版本号
5.1本地创建tag
git tag -a '0.0.1' -m '第一个版本的tag'
5.2查看本地tag
5.3添加到远程仓库(只提交tags)
git push --tags
releases详情
三、终端操作--第二次及以后代码更新上传
1 提交到暂缓区
git status
提交到暂缓区
git commit -m '第二次提交代码'
3.上传代码到github
git push -u origin master
4 添加tag号
git tag '0.0.2'
5 push 指定tag号
git push origin 0.0.2
上传tag号为0.0.2的代码成功
四、终端操作--删除一个版本
1 本地删除
这里举例删除0.0.1的版本
git tag -d 0.0.1
2 远程删除
git push origin :0.0.1
五、忽略指定文件
cd desktop ///切换到桌面
touch .gitignore
///创建.gitignore
.gitignore
///进入编辑.gitignore
忽略Pods和里面的所有文件
退出编辑模式的命令是:
先按esc退出编辑模式
然后输入 :wq 冒号也要输入进去,然后回车退出编辑。
这样你就生成了一个.gitignore文件,这个文件放在和.git这个隐藏文件夹同级的位置
1 下面是一些gitignore文件的写法分享:
(1)所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
(2)可以使用标准的 glob 模式匹配。
(3)匹配模式最后跟反斜杠(/)说明要忽略的是目录。
(4)要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
# 但 lib.a 除外
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
# 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
2 下面有些人会遇到加上这个文件,发现忽略的文件还是有上传。
在git库中已存在了这个文件,之前push提交过该文件。
.gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了
需要在git库中删除该文件,并更新。
然后再次git status查看状态,文件不再显示状态。
六、远程代码更新后同步到本地
$ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
$ git log -p master.. origin/master//比较本地的仓库和远程参考的区别
$ git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并
$ git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
$ git diff temp//比较master分支和temp分支的不同
$ git merge temp//合并temp分支到master分支
$ git branch -d temp//删除temp
1.远程删除代码库
进入setting
填写仓库代码名
2.查看版本信息
3.git的基本使用指令汇总
#初始化git仓库
#添加当前文件夹下的所有文件
git status
git commit
git commit
-m ‘注释’
#提交代码加注释
# 看提交记录
git push origin master
#推送到远程master分支
git push origin ‘版本号’
#按照版本号推送到远程
git remote add origin &URL&
#关联远程仓库
git tag -a ’版本’ -m ‘描述’
git push - -tags
#提交到远程
写在最后:
希望这篇文章对您有帮助。当然如果您发现有可以优化的地方,希望您能慷慨的提出来。最后祝您工作愉快!
在这个浮躁的时代,何不静下心来,漫步iOS,享受生活
Git全面教程 简介 Git分布式版本管理系统。 Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的方式给Linus,然后他本人通过手工的方式进行合并代码。后来在2002年B...
内容最后更新时间: 以下内容是我在收集而来,再经过自己的经验修改而成,希望对你有用(在不断的更新中) 博客地址 欢迎来到Github 初识Github 版本控制的介绍 熟练使用Git/Github是互联网公司程序员的必备技能之一。当开发中遇到困难或者职业...
目录 一、版本控制概要 1.1、什么是版本控制 1.2、常用术语 1.3、常见的版本控制器 1.4、版本控制分类 1.4.1、本地版本控制 1.4.2、集中版本控制 1.4.3、分布式版本控制 1.5、Git与SVN最主要区别 二、Git安装与配置 2.1、什么是Git 2...
一、电脑本地初始化一个仓库 1. git init: 初始化一个电脑上本地仓库 终端进入项目目录,输入: 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。详细介绍:https://git-sc...
本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7529022 Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势...
千盼万盼,我终于盼来了回国。
自从去年匆促地决定去海外工作不再读研后,我的生活发生了翻天覆地的变化。
写作如今已经变成了我最大的自我救赎,因为我孤独,特别特别特别特别孤独,我无法数过来自己一个人独处了多少时光,无论是在彼岸的非洲,还是国内,我一直都很孤单很孤单,...
快速掌握用户思维的四大秘诀: 1、用户第一 2、体验工作 3、体验产品 4、调查回访 在互联网这个空间里,有一种思维方式特别重要,是什么思维的,她就是用户思维,那么我们应该如何掌握这一思维呢,可以从以下几个方面来看: 1、用户第一 在我们内心深处,要时刻装着一种思维就是用户...
以一场电影院里的暴哭结束漫长的像一年的大三上。开学时唐诗研究的老师说过一句话“你们现在还年轻,多花些时间去寻找你们真正擅长且喜欢的东西吧,会很有收获的。”这话一开始不过像场过山风,以为只在心里掀起小小波澜就再也毫无痕迹,谁知道这学期最多个难眠的日子确实是在不停的在追问内心:...
In the last two decades, the television has became a familiar mass device though in the beginning only a few family could possess one. Th...

我要回帖

更多关于 linux 文件历史记录 的文章

 

随机推荐