版本控制工具(下)——Git的远程仓库、分支管理与其它操作
预备知识:
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的远程仓库、分支管理与其它操作的更多相关文章
- Git版本控制工具(三)----远程仓库GitHub的使用
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Git 远程仓库分支管理
目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...
- Git remote 远程仓库链接管理
SVN 使用单个集中仓库作为开发人员的通信枢纽,通过在开发人员的工作副本和中央仓库之间传递变更集来进行协作. 这与 Git 的分布式协作模型不同,后者为每个开发人员提供了自己的仓库副本,并具有自己的本 ...
- mac下git连接远程仓库gitee
一.注册账号 https://gitee.com/ 二.创建仓库 三.创建后显示如下 四.根据页面上展示命令敲一遍就可以了. 备注:注意!!
- Git:六、分支管理(指针操作)
1.基本操作 1)创建分支 git branch <name> 2)切换分支 git checkout <name> 1)&2)创建并切换分支 git checkout ...
- Git从远程仓库里拉取一条本地不存在的分支方法
Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...
- git clone远程仓库的指定分支
正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...
- Git 获取远程仓库指定分支内容
1. 在本地一个空的文件夹中 git init (生成本地仓库) 2. 在刚刚的文件夹中随便建立一个文件 ,git add . (为了生成分支)(提交到暂存区) 3. git commit -m'1 ...
- 为git创建远程仓库
首先生成ssh公钥: 将公钥添加到git: 测试秘钥是否通过: 然后就可以到web界面看到标注的地方被绿了: 但是我的没有绿,不知道为啥,难道没有女朋友的原因吗? rm -rf .ssh 重来好几遍都 ...
- 【版本控制工具】 Git基础
一.Git简介 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.于是Git 成了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. (Git目前使用率非常 ...
随机推荐
- 沉淀,再出发:结合案例看python
沉淀,再出发:结合案例看python 一.前言 关于python,如果不经过大型程序开发的洗礼,我们很难说自己已经懂得了python了,因此,我们需要通过稍微结构化的编程来学习python. 二.一个 ...
- ZT android -- 蓝牙 bluetooth (五)接电话与听音乐
android -- 蓝牙 bluetooth (五)接电话与听音乐 分类: Android的原生应用分析 2013-07-13 20:53 2165人阅读 评论(9) 收藏 举报 蓝牙android ...
- PDF文件如何转成markdown格式
百度上根据pdf转makrdown为关键字进行搜索,结果大多数是反过来的转换,即markdown文本转PDF格式. 但是PDF转markdown的解决方案很少. 正好我工作上有这个需求,所以自己实现了 ...
- web自动化_浏览器驱动chromedriver安装方法(适用RF框架/Selenium/Appium)
在进行UI自动化时,打开浏览器是第一步,这就必须要安装浏览器的驱动,chrome浏览器需要安装chromedriver,下载地址:http://chromedriver.storage.googlea ...
- 浅谈 JavaScript 中的继承模式
最近在读一本设计模式的书,书中的开头部分就讲了一下 JavaScript 中的继承,阅读之后写下了这篇博客作为笔记.毕竟好记性不如烂笔头. JavaScript 是一门面向对象的语言,但是 ES6 之 ...
- showDoc项目文档管理工具
1:下载showdoc代码文件 https://github.com/star7th/showdoc https://www.showdoc.cc/help?page_id=14 官方帮助文档 2:安 ...
- 日常踩坑——Dev C++ pow()函数的坑
坑 Dev C++ pow()函数 那年冬天,显示屏前坐着如喽啰,那时候我含泪发誓,再也不用Dev. 蓝桥杯官网给提供的版本,没办法bug也得硬着头皮用. 16年蓝桥杯的第八题 四平方和定理: 在De ...
- Kali-linux使用SET实施攻击
前面介绍了社会工程学工具包(SET)的简单使用.为了能帮助用户更容易的理解社会工程学的强大功能.本节将介绍使用社会工程学工具包实施各种攻击. 7.4.1 针对性钓鱼攻击向量 针对性钓鱼攻击向量通过构造 ...
- Owin+ASP.NET Identity浅析系列(五)接入第三方登录
在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… OK,用户角色实现后,我们回 ...
- 401. Binary Watch 回溯
A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...