版本控制Git研究二
经过好几周的工作忙碌,终于可以有时间静下心来学习东西了,做为崇尚技术的人来说,应该是最幸福的时光了,呵呵,当然也是宅神的表现啦,话不多说,继续git的学习,上次已经对git的一些概念进行了说明,具体可以参考:http://www.cnblogs.com/webor2006/p/3574700.html ,这次来以实际的操作,对git在实际工作中的使用进行进一步阐述。
下面分两种角色进行学习:Git的个体工作者(也就是使用者)和Git的仓库管理员:
Git的个体工作者(也就是使用者):
- 基本操作
① 初使化和建立项目,有两种方式:
本地仓库:
关于这个操作,已经在上节博文中有介绍过,这里就不多说了。远程仓库:

具体我们来实验下:

实际上,对于远程仓库,可以查看它的仓库名:
而这相当于是远程仓库的别名,实际上可以查看其真实仓库地址:
而如果是本地仓库呢?看是否也能显示这些信息,先回到本地init的仓库目录:
当然不能显示了,因为是本地的仓库,不是远程仓库
②add & commit:
为了便于命令的学习,git官网提供的远程地址不是太稳定,所以在oschina中我建一个自己的git远程仓库,方便学习:

【说明】:oschina开源中国社区团队推出的基于Git的快速的、免费的、稳定的在线代码托管平台
这时,通过git status来查看一下当前仓库的状态:

这时,我们将其添加到版本库中:
这时再将文件提交到我们的本地仓库中:
③Ignore file(忽略文件):
在svn中,我们也有忽略文件的功能,也就是想忽略掉不想提交的文件,在android开发中,经常会有bin,gen目录,而每次的改天这些目录的文件都会变化,所以应该忽略掉它们,所以,下面用实验来模拟这种场景,新建两个文件,让其中一个忽略,另外一个可以提交:
那在git中是如何忽略文件的呢?实际上是建立一个忽略文件,然后将你想忽略的文件加入到里面,步骤如下:
然后将要忽略的文件添加进去:
这时,提交真会如我们所愿,bin.dll文件会被忽略,而bin2.dll应该能被提交?

④diff(文件比较):
在敲比较命令之前,先说明一个概念:
git diff -staged:它比较的是working directory和staging area之间的区别
git diff -cached:它比较的是staging area和git directory之间的区别
下面用实验来说明:
先修改一个文件:


这时候,我们执行git add ,将其添加到staing are区域:
其实gid diff默认就是git diff -stagged
下面,再比较staging area和git directory两者的区别:
【说明】:关于working directory、staging area、git directory三者的概念,可以参考博文:http://www.cnblogs.com/webor2006/p/3574700.html⑤reset:恢复到之前版本
关于这个命令,平常用得不多,可用checkout来代替,这个之后会学习到,所以先暂且不用理解。
⑥rm,mv:删除与移动
这时我们查看一下状态:
【注意】:这里是删除了staging area索引中的文件,但并未真正从git directory本地仓库中删除,所以还可以从本地仓库中checkout出来,将删除的文件还原
如果想真正的从本地仓库删除,则需这样做:
再查看一下状态:
对于mv操作,基本类似,想要改变仓库则最终需要提交一下,这里就不多说了。
⑦log、whatchanged:查看日志
对于git的增删改查记录,实际上是可以查看的,在团队开发中,对于每个人提交的东东就可以有据可依:
同样whatchanged一样,只是说更详细一点:
【注意】如果想退出查看log,需按下"q"键,直接按ctrl+z是无法退出日志查看状态的。 - 共享及更新项目
①push:将本地仓库的代码提交给远程仓库:
而目前本地仓库的文件结构如下:
这时我们将其提交到进程仓库中,利用push命令:
这时到oschina.git中来查看远程仓库中是否已经有了cexo.txt文件:
②fetch,pull:从远程的分支获取最新的版本到本地
关于这两者的区别,可以参考网上的这篇博文:http://blog.csdn.net/hudashi/article/details/7664457
何时使用fetch?
③remote:查看远程仓库信息【关于这个,已经在上面中提到过】
git remote:显示出远程版本别名:
git remote -v 显示远程地址添加远程仓库
git remote add pd git://github.com/cexo/ticgit.git
git remote rename pd paul
git remote rm paul
git remote show origin
Git的仓库管理员:
- 分支管理及合并
对于Git来说,分支是它的一个很重要的特点,所以需好好理解它
①branch:
创建分支:git branch 分支名:
查看当前的分支情况:
注意一个细节,查看当前处理哪个分支上,可以通过它:
- ②checkout:
切换分支
下面要做一个实现,来体会一下分支的作用,先切回主分支来查看一下目前文件:
这时,切换到子分支,对cexo.txt进行修改,模拟在实际开发中的场景:
于切换回主分支:
另外还有一些可以查看分支的命令:
git show-branch:
git diff branch1 branch2
③merge(合并):
当子分支开发完了并验证没问题了,则可以将其合并到master主分支上来了,所以合并分支有两种方式:
第一种:git merge "merge branch1 to master" HEAD branch1
意思是将branch1的代码合并到主分支上的最新代码,其中HEAD表示最新
第二种:
git checkout master
git pull . branch1
操练一下,将子分支cexo中修改的合到主分支上来:
当然,实际merge时,肯定不会像现在这么顺利,肯定会有冲突的情况,下面来模拟一下怎么解决冲突:
这时将其提交:
同样,在子分支中进行修改同一个地方并提交:

这时,再回到主分支进行合并:


最后再提交:
④tag:
当项目的第一个beta版本出来之后,可以对其加入一个tag,以便如果之后的开发有问题,可以快速回归到这个版本,所以tag的作用也就在此,下面来模拟一下:
假如目前的版本是beta1,已经发布了,这时打上一个Beta1的tag:
然后开始第二个版本的开发,版本为Beta2,这时又打上一个Tag:
提交:
这时,想查看Beta1的代码:
但是如上图运行提醒所说:
所以,如果想从tag中的代码上继续修改,则需要在一个新的分支上进行。
最后,如果想删除tag,执行下面命令既可:
好了,关于Git的学习,先到此为止,在实际工作中遇到代码管理的一些问题会继续跟进的!
版本控制Git研究二的更多相关文章
- 版本控制git之二 分支 切换分支 创建分支 合并 删除
版本控制git之二 分支 有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处 ...
- 版本控制Git研究一
对于Git的使用,早在2010年的时候,就已经开始了,接触它也是由于Android开发的原因,我们知道Android源代码的管理就是用的Git,而至今期间已经呆过几个不同的公司,不同公司对于代码的管理 ...
- 版本控制git之二-分支
有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量, ...
- iOS版本控制git小结--yoowei
# 显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder # 不显示隐藏文件 d ...
- Fiddler实战深入研究(二)
Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...
- Git 笔记二-Git安装与初始配置
git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...
- 版本控制Git使用最佳实践
总结版本控制Git的使用,应明确有哪些具体的场景 应用场景 紧急上线(hotfix) 功能开发(feature) 测试(dev/release) 生产(master) 紧急上线 4.git c ...
- (转载)Fiddler实战深入研究(二)
原文来源于:http://www.cnblogs.com/tugenhua0707/p/4637771.html,作者:涂根华 !个人觉得文章写的特别好,故收藏于此,感谢原作者的分享 Fiddler实 ...
- Fiddler实战深入研究(二)[转载]
Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...
随机推荐
- Dubbo版本升级
一.背景 早期内部使用的是当当网fork的Dubbox,由于现在Dubbo又开始重新维护,而且阿里将其捐献给了Apache,并成为了Apache的顶级项目.因此dubbo版本升级到2.7.1势在必行. ...
- 考前最后的感叹:CSP2019 Bless All! & AFO
因为没有退路,所以勇往直前. ----来自高二老年选手小蒟蒻XY Upd:凉凉了,你们都稳了...我看来是超不过准考证号了qwq[大哭] Upd:来自联考txdy的神仙gcz Upd:久远的回忆:会不 ...
- Python 内置函数--range() xrange()
>>>xrange(8) xrange(8) >>> list(xrange(8)) [0, 1, 2, 3, 4, 5, 6, 7] >>> r ...
- Android接收RabbitMQ消息。
参考:https://blog.csdn.net/qq_36576738/article/details/83754621 我这android这边就不实现发布消息功能.因为我是在服务端那边推送消息. ...
- 第6/7Beta冲刺
1.团队成员 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.SCRU部分 2.1各成 ...
- Python安装-Pycharm+Anaconda
1.初识Python Python是一门非常简单优雅的编程语言,可以用极少的代码就能实现强大的功能,而且学习起来十分简单,没有编程基础也可轻松入门.其功能强大,特别是第三方库的库的支持,使得开发方便十 ...
- TiDB基本架构简单总结
TiDB特点 高可用 水平拓展 事务 SQL支持 TiDB架构 和MySql不同,TiDB是一个分布式的数据库而不是单个进程,所以整个TiDB是由以下角色组成: TiKV, PD, TiDB, T ...
- 【scratch3.0教程】2.1 涂鸦花朵
第4课 涂鸦花朵 1.编程前的准备 在设计一个作品之前,必须先策划一个脚本,然后再根据脚本,收集或制作素材(图案,声音等)接着就可以启动Scratch,汇入角色,舞台,利用搭程序积木的方式编辑程 ...
- ByteArray、16进制、字符串之间的转换
ByteArray.16进制.字符串之间的转换: package fengzi.convert { import flash.utils.ByteArray; public class ByteArr ...
- Xshell连接虚拟机文档教程
1打开VirtualBox 2 找到导入的虚拟机 3右键虚拟机 启动 4 等待加载 5 加载的时候,打开xshell 6 7 填写框住的内容 名称: 自己取 主机: 127.0.0.1 固定内容 端 ...