分布式版本控制工具Git
一、Git技术简介
Git是一个分布式版本控制系统,与集中式的SVN不同。
1. 主要特点
集中式特点:
- 所有人的资源全部保存在中央服务器。
- 所有人开发前都需要从中央服务器上下载同步其他人的代码才能继续开发,慢。
- 中央服务器一旦数据丢失,意味着所有数据全部丢失。
分布式特点:
- 每个人的电脑都是一个完整的版本库
- 每个人修改完毕之后,会将资源发送至其他每个同事的电脑。
- 如果个人电脑数据丢失,随便从其他人那里复制一份即可。
二、Git环境搭建
1.下载Git客户端
2.安装Git客户端
注释:Git使用了cygwin在windows下模拟了unix环境,所以支持很多unix文件操作命令。
a) 将git客户端下载后安装在非中文目录下。
b) 下载Git图形化工具:smartGit
http://www.syntevo.com/static/smart/download/smartgit/smartgit-win32-setup-jre-17_0_5.zip
3.创建版本库
解释:所谓版本库,就是本地的仓库,本质就是一个文件夹,只不过该文件夹会受到git的管理,每个文件的创建修改都能跟踪
例如要将d盘下的work目录中创建gitrepo目录作为git仓库文件夹。
仓库创建好之后,会生成.git的目录,.git的目录,是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。默认是隐藏的。
三、Git的常用版本控制命令
1. 添加文件到版本库
· 示例: 向版本仓库中添加一个HelloGit.java文件。
· 注意事项:
① 版本控制器只能记录文本文件的改动痕迹。
② 二进制文件只能记录大小变化。
③ 文本文件必须使用UTF-8编码
④ windows用户不要使用系统自带记事本编辑器。
· 操作:
1.1 在git的仓库目录或者子目录中创建一个HelloGit.java文件。
1.2 使用 stage 操作将文件把文件交给git管理的暂存区【相当于数据库的dml语句,将数据修改存放在rollback seagment回滚段,暂存区与当前客户端对应】
1.3 使用 commit 完成文件的提交【相当于数据库的提交事务,将暂存的内容提交给git管理。】
使用commit提交文件需要设置 因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置
2. 版本管理机制
开发中会对代码文件进行一次又一次修改,就好比我们打rpg游戏,每打败一个boss就存档一次,如果某次打boss失败了,我们也可以利用存档回退到之前的某个进度,不至于从头开始。git也一样,每次修改到一定程序,就要利用commit命令产生一个快照,日后一旦改错了,也可以利用commit快照回退之前的某个快照时刻
① stage是将当前修改提交到暂存区。
② commit 才是一次性将暂存区的数据同步到仓库。
③ 每次commit,其实就是对当前进度生成一个快照,就表示当前进度。
进度模型:
3. 版本管理
4.1 工作区修改撤销
4.2 内容已经被提交到暂存区staged
如果需要将工作区的内容页撤销掉,需要使用git checkout -- file。
4.3 内容已经commit到仓库区:使用版本回退。
① 使用git log命令查看文件的修改详细历史记录。
② 跳到指定版本
③ 工作区文件撤销和仓库保持一致,需要对工作区文件撤销操作。
4.4 删除文件
ps:本质也是提交修改,删除也是一种修改。
① 删除工作区的文件,然后再smartgit中提交修改。
四、远程仓库
1. 创建远程仓库
1.1 使用邮箱在第三放GitHub网站注册一个账号。
开源中国码云:http://git.oschina.net/
1.2 创建远程仓库
注意:远程仓库和本地仓库名必须一致,否则无法提交。
2. 绑定远程仓库
2.1 复制远程仓库的地址
2.2 在smartgit中添加远程仓库地址进行绑定。
2.3 先确保项目已经commit。
2.4 点击项目文件夹,然后点击pull。将本地仓库和远程仓库绑定。
2.5 将本地项目推送到远程仓库.
3. 从远程仓库克隆
注释:最正确的工作流程是先创建远程仓库,然后克隆远程仓库
3.1:创建远程仓库
3.2:克隆远程仓库
git clone 远程仓库项目的地址
3.3 使用smart克隆clone远程仓库到本地
3.4 可以在克隆到本地的仓库进行操作。
4. git操作命令简图
说明: workspace:本地工作区 Index/Staged:暂存区 Repository:本地仓库 Remote:远程仓库 |
五、分支管理
1. 概念
分支就好比是火影中的影分身之术,比如你要同时完成学习Spring和Linux两件事,你可以分身,然后一个分身花5天时间去学习Spring,另一个分身花5天学习Linux,这5天之内各个分身互不干扰,5天之后分身合并,你就同时掌握了Spring和Linux两种技术。
2. 作用
比如开发中,你有一个任务需要1个月完成,如果完成再提交,过程中有代码丢失的风险,但是完成之前就提交可能导致别人无法工作。通常来讲,一个人使用一个分支。
3. 分支管理
ps:系统默认有一个主分支--master
3.1 查看目前所有的分支:git branch
3.2 创建分支:git branch 分支名
3.4 合并分支:
4. 解决冲突
ps:所谓冲突一般就是两个人开发中在各自的分支中修改了同一个文件,并且要提交。
就好比你有两个分身,都学习了做饭西红柿炒鸡蛋,一个放糖,一个放盐,合并的时候必须把这个矛盾手动解决,
执行合并是会出现上图中的状态,需要两个分支所对应的人共同协商给出冲突解决结果,将文件修改之后,然后由其中一个人完成add和commit,然后再合并。
5. 远程仓库分支管理
5.1 将指定分支推送到远程:git push origin 分支名
6. 分支管理策略
6.1 master分支,主分支,时刻与远程仓库保持一致。
6.2 dev分支,开发分支,涉及到多人协作,且保存这多人共同的开发进度。如果所有人的开发进度需要与远程保持一致,则需要推送到远程,否则本地也可以。
六、标签管理
概念:tag其实就是对某个commit的快照添加个标记,快照虽然也有版本号,但是是一串32位的UUID很难记忆也不易于沟通,而换成标签tag:v1.0 、v2.0这样的标记就很容易记忆。比如“将master主分支上,v1.0标签的项目打包发布”就比 “将master主分支上a732s8a89s88d...版本的项目打包发布”容易的多。
1. 创建标签
切换到要添加标签的分支上,找到对应的版本,右键选择Add Tag操作。
2. 管理标签
2.1 查看所有标签
2.2 删除标签
在标签右键--->Delete即可。
2.3 把标签推送到远程仓库
选中标签--->右键-->push to
七、 Eclipse整合操作
1. 创建项目分享到git远程仓库。
2. 从git仓库克隆项目
3. 开发过程中的操作流程
八、 常用的第三方在线Git仓库
分布式版本控制工具Git的更多相关文章
- 痞子衡嵌入式:备受开源社区推崇的分布式版本控制工具(Git)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是分布式版本控制工具Git. 1.为什么需要版本控制系统? 单人软件项目开发过程,往往很多功能都是逐步增加的,在代码开发过程中,有的时候功 ...
- 开源分布式版本控制工具 —— Git 之旅
Git 主张的分布式代码库与文件快照的设计思想,相对于传统 CVS.SVN 等集中式.文件差异式版本控制工具是一种挑战与颠覆.Git 带来了离线提交.轻量级分支等诸多便利.不过,也有人质疑 Git 的 ...
- 分布式版本控制工具:git与Mercurial(zz)
分布式版本控制工具:git与Mercurial [收藏此页] [打印] 作者:cyfdecyf 2007-12-26 内容导航: 第1页 [IT168 技术文档] 说到版本控制工具,很 ...
- 版本控制工具——Git常用操作(上)
本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...
- 版本控制工具 - Git
版本控制工具 - Git 安装完成后,打开Git Bash,这是一个命令行工具,用于操作仓库和仓库的文件.你可以通过命令将已经存在的项目变成仓库,也可以重新创建一个新项目再通过命令将其变成仓库,还可以 ...
- 版本控制工具Git工具快速入门-Linux篇
版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- 版本控制工具Git介绍-01
使用版本控制工具是为了方便团队开发,比如多人共同维护一个项目的时候,用版本控制工具可以很方便的维护项目代码,如果哪天你改了一个版本,出问题了,我们也可以很快的找到你改了什么,这里介绍使用比较多的版本控 ...
- 强大得分布式项目管理工具Git
---恢复内容开始--- 强大的分布式管理工具-Git(一) 前言:最近忙着写项目,在期间呢,用的是git管理,由于一个项目的管理是很重要得,所以整理了一篇关于git得博客跟大家分享一下.大家都知道, ...
随机推荐
- 自然语言处理(简称NLP)
自然语言处理(简称NLP),是研究计算机处理人类语言的一门技术,包括: 1.句法语义分析:对于给定的句子,进行分词.词性标记.命名实体识别和链接.句法分析.语义角色识别和多义词消歧. 2.信息抽取:从 ...
- 【自学系列一】HTML5大前端学习路线+视频教程(完整版)
今年,本公司全新发布了囊括Java.HTML5前端.大数据.Python爬虫.全链UI设计.软件测试.Unity 3D.Go语言等多个技术方向的全套视频. 面对这么多的知识点,有的盆友就麻爪了…… 我 ...
- 通用32位CPU 常用寄存器及其作用
目录 32位CPU所含有的寄存器 数据寄存器 变址寄存器 指针寄存器 段寄存器 指令指针寄存器 标志寄存器 32位CPU所含有的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针 ...
- 如何利用 iTunes 把 m4a/wav 文件转成 MP3 格式
MAC技巧 | 如何利用 iTunes 把 m4a/wav 文件转成 MP3 格式 - 简书
- [Luogu5324][BJOI2019]删数(线段树)
CF风格题,先猜结论,记数列中i这个数共出现了cnt[i]次,那么所有区间[i-cnt[i]+1,i]的并集的补集大小就是答案. 于是我们只需要线段树维护每个位置是否被某个区间覆盖到即可,对于整体加减 ...
- ef core数据迁移的一点小感悟
ef core在针对mysql数据迁移的时候,有些时候没法迁移...有两种情况没法迁移,一种是因为efcore的bug问题导致没法迁移,这个在github上有个问题集,另外一种是对数据表进行较大幅度的 ...
- Go part 6 接口,接口排序,接口嵌套组合,接口与类型转换,接口断言
接口 接口是一种协议,比如一个汽车的协议,就应该有 “行驶”,“按喇叭”,“开远光” 等功能(方法),这就是实现汽车的协议规范,完成了汽车的协议规范,就实现了汽车的接口,然后使用接口 接口的定义:本身 ...
- Java中的反射机制和动态代理
一.反射概述 反射机制指的是Java在运行时候有一种自观的能力,能够了解自身的情况为下一步做准备,其想表达的意思就是:在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法:对于任意一个对象 ...
- Git撤回已经推送(push)至远程仓库提交(commit)的版本
背景 所以,经常会遇到已经提交远程仓库,但是又不是我想要的版本,要撤下来. 回退版本一般使用git reset,又分为: # 不删除工作空间改动代码,撤销commit,不撤销git add . git ...
- 【转载】 Sqlserver使用Left函数从最左边开始截取固定长度字符串
在Sqlserver数据库的字符串操作中,截取字符串是最常见的操作,sql server提供了3个常用截取字符串方法,LEFT().RIGHT().SUBSTRING(),如果从第一个字符即最左边位置 ...