一、git简介

什么是git?
git是一款开源的分布式版本控制工具
在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
git的起源
作者是Linux之父:Linus Benedict Torvalds
当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
git的现状
在国外已经非常普及,国内并未普及(在慢慢普及)

越来越多的开源项目已经转移到git

CVS
最早的开源、免费的集中式版本控制工具
自身设计有问题,会造成提交文件不完整,版本库莫名其妙损坏的情况
SVN
修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制工具
ClearCase
收费的集中式版本控制工具,安装比Windows还大,运行比蜗牛还慢
能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗或者人傻钱多
VSS
微软的集中式版本控制工具,集成在Visual Studio中

二、分布式版本控制和集中式版本控制

集中式版本控制
分布式版本控制

三、git和SVN

1、git和SVN的简单对比
速度
在很多情况下,git的速度远远比SVN快
结构
SVN是集中式管理,git是分布式管理
其他
SVN使用分支比较笨拙,git可以轻松拥有无限个分支
SVN必须联网才能正常工作,git支持本地版本控制工作
旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git
2、SVN的工作流程
3、git的工作流程
分布式和集中式的最大区别在于:在分布式下
开发者可以本地提交
每个开发者机器上都有一个服务器的数据库

四、如何使用git

1、使用git
跟SVN一样,你可以通过命令行敲指令或者图形界面客户端使用git
在Mac上,比较好用的git图形界面客户端有
SourceTree
下载地址:http://www.sourcetreeapp.com/download/
GitHub
下载地址:https://mac.github.com
不过它是专门为GitHub网站而设计的
Xcode
2、git常用指令
git help :git指令帮助手册
查看其他指令的做法:git help 其他指令
git config :git的配置信息相关(修改的是.git/config文件)
配置用户名:git config “user.name” 用户名(用于跟踪修改记录)
配置邮箱:git config “user.email” 邮箱(用于多人开发间的沟通)
查看配置信息:git config –l
编辑配置信息:git config –e(用vim编辑,:wq是退出vim编辑器)
设置指令的别名:git config alias.别名 原指令名称
设置带参数指令的别名:git config alias.别名 “原指令名称 参数”
将此设置应用到整个系统中:git config ––gloabal
git status :查文件的状态
查看某个文件的状态:git status 文件名
查看当前路径所有文件的状态:git status
git log :查看文件的修改日志
查看某个文件的修改日志:git log 文件名
查看当前路径所有文件的修改日志:git log
用一行的方式查看简单的日志信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一个整数)
git diff :查看文件最新改动的地方
查看某个文件的最新改动的地方:git diff 文件名

查看当前路径所有文件最新改动的地方:git diff

git init :初始化一个空的本地仓库,生成一个.git目录,用于维护版本信息
在当前路径初始化仓库:git init
在其他路径初始化仓库:git init 仓库路径
git add :将工作区的文件保存到暂缓区
保存某个文件到暂缓区:git add 文件名
保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )
git commit :将暂缓区的文件提交到当前分支
提交某个文件到分支:git commit -m ”注释” 文件名
保存当前路径的所有文件到分支:git commit -m ”注释” 
git reset :版本回退(建议加上––hard参数,git支持无限次后悔)
回退到上一个版本:git reset ––hard HEAD^
回退到上上一个版本:git reset ––hard HEAD^^
回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)
git reflog :查看指令使用记录(能够查看所有的版本号)
git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)
git clone:下载远程仓库到本地
下载远程仓库到当前路径:git clone 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
git pull:下载远程仓库的最新信息到本地仓库
git push:将本地的仓库信息推送到远程仓库

五、工作原理

如果想了解git的工作原理,有几个核心概念必须知道
工作区(Working Directory):仓库文件夹里除.git目录以外的内容
版本库(Repository):.git目录,用于存储记录版本信息
暂缓区(stage)
分支(master):git自动创建的第一个分支
HEAD指针:用于指向当前分支
git add和git commit的原理
git add :把文件修改或者新添加的文件添加到暂存区
git commit :把暂存区的所有内容提交到当前分支

六、远程仓库

如果是多人团队开发,最好还是搭建一个远程仓库
搭建远程仓库的途径
自己搭建一个git服务器:费时费力
在GitHub上托管项目:公开项目免费、私有项目收费,很多第三方开源项目
在oschina上托管项目:完全免费,在国内访问速度快(推荐使用)

七、搭建GitHub远程仓库

1、配置SSH Key
注册一个GitHub帐号:https://github.com
打开“Account Settings
点击“SSH keys”
配置Mac的SSH Key的公钥(用于限制提交)
查看ssh版本 $ ssh –v
打开终端,$ ssh-keygen 一路enter下。
在Mac上生成SSH Key(在终端输入下面指令)
cd ~/.ssh
ssh-keygen -t rsa -C "你的邮箱地址”
然后一直敲回车
然后就会在~/.ssh目录下生成SSK Key的秘钥对
id_rsa :私钥,不可泄露
id_rsa.pub :公钥,可以公开(将这个文件的内容粘贴到GitHub上)
利用cat指令可以查看文件的内容
cat id_rsa.pub
2、添加仓库
拷贝仓库地址,用于下载到本地
如果想删除仓库,也很简单

八、搭建oschina远程仓库

1、创建仓库
注册一个oschina帐号:https://git.oschina.net
仓库地址
添加项目组成员

随后需要在终端设置git的邮箱和用户名,不然没有访问仓库的权限

2、删除仓库

转载于:https://www.cnblogs.com/chglog/p/4770974.html

iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )...相关推荐

  1. 集中式版本控制与分布式版本控制——Git 学习笔记01

    什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件"另存为"一个文 ...

  2. Git学习笔记(集中式版本控制工具与分布式版本控制工具)

    集中式版本控制工具 集中式版本控制工具是指所有的项目版本都存储在唯一的服务器中,而团队中使用者本地只保存有最新版本.因此,当服务器宕机或故障时,服务器中文件如果损坏或缺失,使用者本地只有最新版本,因此 ...

  3. 集中式版本控制与分布式版本控制

    文章目录 集中式版本控制 分布式版本控制 引用 集中式版本控制 所有的版本数据都存在服务器上,用户的本地设备就只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或 ...

  4. 分布式和集中式版本控制的区别

    Chapter: 开始了解Git 先谈谈版本控制的一些事 Git诞生背后的一些故事 版本控制:集中式VS分布式 Git的思想和基本工作原理 Git在Windows下的安装 前面提到,Linus一直痛恨 ...

  5. 集中式版本控制 VS 分布式版本控制

      目前企业使用的版本控制系统基本上都是 Git 和 SVN.其中 SVN 是集中式的版本控制系统,而 Git 是分布式的版本控制系统.那么它们之间有什么区别呢? 集中式版本控制系统   集中式版本控 ...

  6. 分布式技术原理(九):分布式体系结构之集中式结构

    分布式体系结构之集中式结构 云这个话题对我们来说已经非常熟悉了.可以说,云在我们的生活中无处不在,比如我们平时看的视频通常就是放在云上的.当我们要播放一段视频时,请求会先转发到云上,从云上下载数据到本 ...

  7. 分布式体系结构:集中式结构

    分布式体系结构:集中式结构 前言 什么是集中式结构? 经典集中式结构 Google Borg Kubernetes Mesos 分析对比 知识扩展:Mesos 是如何支持容器部署的? 总结 前言 云上 ...

  8. 分布式映射与集中式映射_K映射上的表达式映射和组包围

    分布式映射与集中式映射 In the previous article (Karnaugh Map 2, 3 and 4- variable) we have already discussed th ...

  9. 版本控制:集中式(SVN) vs 分布式(GIT)

    Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候 ...

  10. 版本控制:集中式VS分布式了解它们的运行方式

    前面提到,Linus一直痛恨CVS及SVN这些集中式的版本控制系统,为什么呢?Git是分布式版本控制系统,那么集中式和分布式版本控制系统又有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央 ...

最新文章

  1. make 操作技巧指南--gcc版本设置
  2. 力压清华北大!深圳大学,世界第三!国际专利申请最新榜单出炉
  3. 大受褒扬,BCH中国开发者走向世界!
  4. 完全二叉树、平衡二叉树、二叉查找树(二叉排序树)
  5. 咦?奇怪的知识又增加了?以数学建模的方式打开海啸传播模型(附部分matlab源码)
  6. 成功解决AttributeError: ‘Series‘ object has no attribute ‘columns‘
  7. jQuery前端教程-张晨光-专题视频课程
  8. 插入数据,已存在则不插入
  9. 关于android中postDelayed方法的讲解
  10. 一 MVC - HtmlHelper
  11. 网页修改iPhone13在线源码 – 无需SVIP
  12. java elementtext_java命名空间javax.xml.stream接口xmlstreamreader成员方法: getelementtext定义参考...
  13. C++中sort排序之自定义排序cmp(入门)
  14. AVDictionary结构体相关源码介绍
  15. 前端开源实战项目推荐
  16. PYTHON网络爬虫大数据朱炯明
  17. dell笔记本驱动安装失败_戴尔笔记本win7系统声卡驱动无法安装的问题分析与解决方案...
  18. 小知识:移动硬盘打不开是什么原因造成的?
  19. 新建linux用户不能登录用户,Linux下useradd命令创建的用户不能登录的问题
  20. 拒绝焦虑状态:TA爱我吗?

热门文章

  1. vscode 更改中办发文_如何在Visual Studio代码或VSCode中更改集成终端
  2. python静态检查工具哪个好用_介绍几款 Python 类型检查工具
  3. mysql表不存在但实际存在_历史上有哪些实际上并不存在的人物但很多人相信他存在的?...
  4. java 约瑟夫环_java中约瑟夫环代码实现
  5. cocos2d 屏幕適配_cocos2dx 3.2 屏幕适配的理解
  6. android 点击文本框 不调用键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...
  7. TensorFlow进阶:CNN对CIFAR10图像分类
  8. CNN卷积神经网络(二)
  9. 私有api调用审核失败 prefs:root
  10. 鸿蒙官网首页,鸿蒙官网-鸿蒙手游官网首页最新版预约 v1.0-优盘手机站