预备知识:

  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. Java中面向对象三大特征

    也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...

  2. [学习笔记] CDQ分治&整体二分

    突然诈尸.png 这两个东西好像都是离线骗分大法... 不过其实这两个东西并不是一样的... 虽然代码长得比较像 CDQ分治 基本思想 其实CDQ分治的基本思想挺简单的... 大概思路就是长这样的: ...

  3. IOS 缓存思路

    为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存) 第一次请求数据时内存缓存中没有数据硬盘缓存中没有数据 当服务器返回数据时,需要做以下步骤 使用服务器的数据(比如解析.显示) 将服务器的 ...

  4. 使用JAVA进行排序

    利用JAVA完成排序 当我们在进行数据库进行查询的时候,当需要按某个字段来进行排序的时候,可以使用SQL语句来完成排序,可以升序,也可以降序.JAVA中的Collections类也可以完成这种操作,S ...

  5. python网络爬虫--简单爬取糗事百科

    刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...

  6. jq封装-无缝滚动效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. java 相等测试与继承

    内容中包含 base64string 图片造成字符过多,拒绝显示

  8. Kali-linux Gerix Wifi Cracker破解无线网络

    Gerix Wifi Cracker是另一个aircrack图形用户界面的无线网络破解工具.本节将介绍使用该工具破解无线网络及创建假的接入点. 9.3.1 Gerix破解WEP加密的无线网络 在前面介 ...

  9. ethereumjs-vm/examples/run-transactions-complete

    1.设置账户: ethereumjs-vm/examples/run-transactions-complete/key-pair.json { "secretKey": &quo ...

  10. (转)查看mysql数据库连接数、并发数相关信息

    查看mysql数据库连接数.并发数相关信息 1.mysql> show status like 'Threads%';+-------------------+-------+| Variabl ...