实用技术第3篇——git的使用

源代码管理工具——git

什么是git?

  • git是一款开源的分布式版本控制工具
  • 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的

其他版本控制工具

  • CVS

    • 最早的开源、免费的集中式版本控制工具
    • 自身设计有问题,会造成提交文件不完整,版本库莫名其妙损坏的情况
  • SVN

    • 修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制工具
  • ClearCase

    • 收费的集中式版本控制工具,安装比Windows还大,运行特别慢
    • 能用ClearCase的一般是世界500等大企业
  • VSS

    • 微软的集中式版本控制工具,集成在VisualStudio中

集中式和分布式版本比较

集中式版本控制

image

分布式版本控制

image

git和SVN的简单对比

  • 速度
    • 在很多情况下,git的速度远远比SVN快
  • 结构
    • SVN是集中式管理,git是分布式管理
  • 其他
    • SVN使用分支比较笨拙,git可以轻松拥有无限个分支
    • SVN必须联网才能正常工作,git支持本地版本控制工作
    • 旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git

git和SVN的工作流程图

SVN的工作流程

image

git的工作流程
image

  • 分布式和集中式的最大区别在于:在分布式下
    • 开发者可以本地提交
    • 每个开发者机器上都有一个服务器的数据库

使用git

  • Mac上比较好用的git图形界面客户端

  • SourceTree

  • GitHub

  • pXcode

  • 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 configalias.别名 原指令名称
设置带参数指令的别名 —— git configalias.别名 “原指令名称 参数”
将此设置应用到整个系统中 —— 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 —— 将本地的仓库信息推送到远程仓库

工作原理

  • 工作区(Working Directory):仓库文件夹里除.git目录以外的内容

  • 版本库(Repository):.git目录,用于存储记录版本信息

    • 暂缓区(stage)
    • 分支(master):git自动创建的第一个分支
    • HEAD指针:用于指向当前分支
  • gitadd和gitcommit的原理

    • gitadd:把文件修改添加到暂存区
    • gitcommit:把暂存区的所有内容提交到当前分支
图1

image

远程仓库

如果是多人团队开发,最好还是搭建一个远程仓库

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

第1种:** 搭建GitHub远程仓库 – 配置SSH Key**

步骤一

  • 注册一个GitHub帐号
  • 打开“AccountSettings"
  • 配置Mac的SSHKey的公钥(用于限制提交)

步骤二
查看ssh版本 ssh–v 打开终端, ssh-keygen一路enter下。 在Mac上生成SSHKey(在终端输入下面指令) cd~/.ssh ssh-keygen-t rsa-C "你的邮箱地址” 然后一直敲回车

然后就会在~/.ssh目录下生成SSKKey的秘钥对 id_rsa:私钥,不可泄露 id_rsa.pub:公钥,可以公开(将这个文件的内容粘贴到GitHub上)

利用cat指令可以查看文件的内容 catid_rsa.pub

步骤三

  • 添加仓库
    • 新建工程
    • 配置仓库名称、仓库描述
    • 选择忽略文件的类型

创建完成

第2种: 搭建oschina远程仓库

  • 注册一个oschina帐号
  • 新建项目
    • 配置名称、介绍
    • 初始化项目
  • 获取仓库地址
  • 创建仓库

创建完成

附录:

// 显示隐藏文件夹
# 显示隐藏文件
 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
# 不显示隐藏文件
 defaults write com.apple.finder AppleShowAllFiles No && killall Finder
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,942评论 3 27
  • 最近,房地产的大火又一次将全国大部分城市燃烧起来,与以往不同的是,除了北上广深的“好戏连台”和南京、杭州、武汉等热...
    061a71a33958阅读 569评论 1 0
  • 说实话,来参加这次教育学习活动,并非本意,而是学校领导安排的。没办法,躲...
    萤火虫菇娘阅读 421评论 0 1
  • 29.zslsww 这张照片是2016年12月27日晚在开州汉丰湖畔拍摄的。当天晚上在工作下班后我们一起相约...
    zslsww阅读 291评论 0 1
  • 厦门以前有个诗意的名字——鹭岛。我相信在遥远的时代,这里白鹭翻飞,渔歌互答。从元明一直到...
    吴献敏阅读 397评论 0 0