预备知识:

  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. android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

    android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

  2. [COGS 2066]七十和十七

    2066. 七十和十七 ★★★   输入文件:xvii.in   输出文件:xvii.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 七十君最近爱上了排序算法,于是Ta ...

  3. HTTP协议图--HTTP 协议基础

    1.通过请求和响应的交换达成通信 应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色.仅从一条通信线路来说,服务器端和客服端的角色是确定的.HTTP 协议规定,请求从客户端发出, ...

  4. Kali Nethunter初体验

    1.官网环境要求:n5 n7 n10 android 4.4 2.实验设备: N7 android 4.4.4 N7 android 4.4.3 N5 nadroid 4.4.2 3.开发者模式+us ...

  5. Linux系统下常用的磁盘管理命令——du / df / fdisk / mount / xxd

    之前使用虚拟机体验Linux操作系统的使用,一般使用默认的磁盘分区设置,也很少涉及磁盘管理操作,且总有删除重装作为后盾.在安装Ubuntu双系统后,在使用过程中遇到了磁盘分区不合理导致的/boot分区 ...

  6. 【vue】饿了么项目-使用webpack打包项目

    1.vue cli给我们提供了npm run build命令打包项目,在packa.json文件中scripts对象中有build属性,当我们执行npm run build时,就执行build对应的& ...

  7. `ECS弹性计算服务

    云服务器(Elastic Compute Service 简称ECS)是一种简单高效,处理能力可弹性伸缩的计算服务.能快速构建更稳定.安全的应用,提升运维效率,降低IT成本. 云服务器ecs作用如下: ...

  8. Dubbo实践(一)入门示例

    dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候 ...

  9. HDU 3047 Zjnu Stadium(带权并查集,难想到)

    M - Zjnu Stadium Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  10. C#中调用方法

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...