预备知识:

  SSH协议参考资料http://blog.csdn.net/vevenlcf/article/details/43273405

  图解公钥和私钥:http://blog.csdn.net/linuxnews/article/details/51119862

  百度百科https://baike.baidu.com/item/ssh/10407?fr=aladdin

  基于密钥的安全验证,就是提供一对密钥,把公钥放在需要访问的服务器上,如果连接到SSH服务器上,客户端就会向服务器发出请求,
请求用密钥进行安全验证,服务器收到请求之后,先在该服务器的主目录下寻找公钥,然后把它和发送过来的公钥进行比较。如果两个密钥一致,
服务器就用公钥加密“质询”并把它发送给客户端。客户端收到“质询”之后就可以用私钥解密再把它发给服务器端。基于这种方式,相对比较安全。

一、远程仓库

  在上一节已经学习了基本配置,接下来开始学习与SVN最大的不同点之一——远程仓库

   配置SSH Key

   为了学习这个,我们先创建一下SSH Key

ssh-keygen -t rsa -C "youremail@example.com"

  一路回车,使用默认完成配置:

  

  之后,就可以看到公钥(.pub)和私钥了:

  

    在Github上配置SSH Key——允许配置多个!

  打开下图中对应的位置,输入公钥内容即可:

  

    添加远程库

  首先在github上创建一个仓库(只要输入必填的仓库名和可选的描述即可)

  

    github会给一些建议与提示等:

  

  我们根据上面的提示也可以看到将本地仓库与远程仓库关联的步骤:

  在本地仓库中运行命令关联远程仓库

git remote add origin git@github.com:jiangbei01/myGit.git

 // 请注意用户名和仓库名,不使用github给出的https的协议原因之一是速度慢!

   将本地分支内容推送到远程仓库

git push -u origin master

  // 然后每次都可以通过push命令同步仓库了,完美!

  从远程仓库克隆

  先在github上创建一个仓库:

  

  之后,在本地运行clone命令即可克隆仓库了!

git clone git@github.com:jiangbei01/myCloneGit.git

二、分支管理

  分支概念:

    分支概念部分请参见:何谓分支

     廖雪峰老师的概念讲解参见:分支管理

  分支管理:

    创建并切换到dev分支:

git checkout -b dev

    上面的-b参数表示创建并切换,他们相当于下面的两条分开的创建与合并:

 git branch dev
git checkout dev

    示例:

    

    查看当前分支:

git branch

    示例:

  

  

  接下来我们在dev分支上开发,修改readme.txt的内容:

  

  正常提交(还记得怎么提交吗):

  

  再切换回主分支:

git checkout master

  

  再次查看时发现主分支上readme.txt的内容并未添加,因为我们是在master分支上,这点可以在概念里看到具体解释

  接下来进行分支合并:git merge用于合并指定分支

git merge dev

  

  此时,分支开发的添加内容又回来了,这里上面红框的“快进”式的添加方式后面将会补充

  分支合并完成确认后就可以删除分支了:删除现有分支之前,请切换到其他分支。

git branch -d dev

  

  冲突解决

  创建并切换到新分支

 git checkout -b feature1

  

  修改readme.txt的最后一行(请注意ctrl+S保存):

  

  在当前分支提交:

  

  切换到master分支

git checkout master

  

  再修改readme.txt文件

  

  同样的,提交当前分支:

  

  经历以上操作后,master和feature1分支各自都有自己的提交的分支,我们尝试进行合并

git merge feature1

  由于修改的是同一处的内容,git无法进行快速合并,并且产生了合并的冲突!

  

  使用git status可以看到具体的冲突文件:

  

  我们打开readme.txt文件可以看到变成了冲突的版本:

  

  很明显,HEAD到=======之间是当前所在分支的版本,======到feature1之间的为对应feature1分支的版本

  当然,使用git diff也可以查看到冲突细节:

  

  我们手动处理一下冲突,处理后的结果如下:

  

  保存确认后,进行提交:

  

  可以查看当前的分支图:

git log --graph
git log --graph --pretty=oneline --abbrev-commit

  

  正常处理冲突正确合并后,删除分支:

git branch -d feature1

  bug分支——现场保存

  相关情景与概念介绍请参见廖雪峰老师的:Bug分支

  修改了内容但不想提交,需要先切换到其它分支修复bug,先看下当前状态

  

  使用git stash(贮藏)

git stash

  

  之后就可以切换分支,修复bug,修复完成后合并分支,删除临时分支,然后再回到贮藏时候所在的分支来

  回来后使用git stash list查看工作现场:

git stash list

  

  恢复现场有两种方式:

git stash apply stash@{}
恢复但不删除stash@{},可以使用git stash drop进行删除
git stash pop
恢复并删除stash的贮藏信息

  

  feature分支

  想要删除一个未合并的分支,使用-D参数强行删除:

git branch -D <name>

三、标签管理

  Git的版本号都是一串无意义的非常大的数字,有时候难以记忆,这时就可以给特定的版本打上tag标签,进行快读定位某版本了!

  创建标签

  切换到需要的打标签的分支,使用git tag <name>进行打标签操作

git tag v1.

  这样默认给当前分支最新的提交打了标签,并且使用git tag可以查看所有标签(和查看分支一样)

  

  使用

git log --pretty=oneline --abbrev-commit

  查看版本提交信息,通过commit id进行特定版本打标签

  

  使用

git show <tagName>

  查看标签信息

  

  标签操作

  和分支操作类似的删除操作

git tag -d v0.

  

  推送特定分支或者全部分支到远程仓库

git push origin v1.
git push origin --tags

  删除远程仓库标签

git tag -d v0. 先删除本地
git push origin :refs/tags/v0. 再删除远程

版本控制工具(下)——Git的远程仓库、分支管理与其它操作的更多相关文章

  1. Git版本控制工具(三)----远程仓库GitHub的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. Git 远程仓库分支管理

    目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...

  3. Git remote 远程仓库链接管理

    SVN 使用单个集中仓库作为开发人员的通信枢纽,通过在开发人员的工作副本和中央仓库之间传递变更集来进行协作. 这与 Git 的分布式协作模型不同,后者为每个开发人员提供了自己的仓库副本,并具有自己的本 ...

  4. mac下git连接远程仓库gitee

    一.注册账号 https://gitee.com/ 二.创建仓库 三.创建后显示如下 四.根据页面上展示命令敲一遍就可以了. 备注:注意!!

  5. Git:六、分支管理(指针操作)

    1.基本操作 1)创建分支 git branch <name> 2)切换分支 git checkout <name> 1)&2)创建并切换分支 git checkout ...

  6. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  7. git clone远程仓库的指定分支

    正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...

  8. Git 获取远程仓库指定分支内容

    1. 在本地一个空的文件夹中 git init  (生成本地仓库) 2. 在刚刚的文件夹中随便建立一个文件 ,git add . (为了生成分支)(提交到暂存区) 3. git commit -m'1 ...

  9. 为git创建远程仓库

    首先生成ssh公钥: 将公钥添加到git: 测试秘钥是否通过: 然后就可以到web界面看到标注的地方被绿了: 但是我的没有绿,不知道为啥,难道没有女朋友的原因吗? rm -rf .ssh 重来好几遍都 ...

  10. 【版本控制工具】 Git基础

    一.Git简介 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.于是Git 成了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. (Git目前使用率非常 ...

随机推荐

  1. Alpha Scrum7

    Alpha Scrum7 牛肉面不要牛肉不要面 Alpha项目冲刺(团队作业5) 各个成员在 Alpha 阶段认领的任务 林志松:项目发布 陈远军.陈彬:播放器各环境的测试 项目的发布说明 本版本的新 ...

  2. IOS http(上传和下载)

    HttpTool.h #import <Foundation/Foundation.h> typedef void (^HttpToolProgressBlock)(CGFloat pro ...

  3. 简单说说Spring Security 使用(附加验证码登录,自定义认证)

    先看官方文档:http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/ spring security4已 ...

  4. BZOJ1731:[USACO]Layout 排队布局(差分约束)

    Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...

  5. 密码加密MD5,Bash64

    基于jar : org.apache.commons.codec 一.MD5概述:不可逆加密 Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广 ...

  6. freemarker模板加载TemplateLoader常见方式

    使用过freemarker的肯定其见过如下情况: java.io.FileNotFoundException: Template xxx.ftl not found. 模板找不到.可能你会认为我明明指 ...

  7. java反序列化Commons-Collections5分析

    BadAttributeValueException package org.lain.poc; import org.apache.commons.collections.Transformer; ...

  8. 6、RabbitMQ-路由模式

    Exchange(交换机 转换器) Exchange分发消息时根据类型的不同分发策略有区别, 目前共四种类型:direct.fanout.topic.headers .   一方面是接受生产者的消息, ...

  9. shell一次性执行多条命令

    1.每个命令之间用;隔开说明:各命令的执行给果,不会影响其它命令的执行.换句话说,各个命令都会执行,但不保证每个命令都执行成功. 2.每个命令之间用&&隔开说明:若前面的命令执行成功, ...

  10. linux 下线程错误查找,与线程分析命令

    一. 使用top和jstack查找线程错误 我们使用jdk自带的jstack来分析.当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1.top查找出哪个进程消耗的cpu ...