设为首页 收藏本站
查看: 770|回复: 0

[经验分享] Git 分布式版本管理

[复制链接]

尚未签到

发表于 2018-1-16 06:16:19 | 显示全部楼层 |阅读模式
  Git是分布式版本控制系统,我们常用的版本控制工具还有SVN。这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统。
  集中化的版本控制系统
  集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )。这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。


http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(16).png  优点:
  1. 每个人可以看到别人做了什么
  2. 管理员管理权限也比较简单
  缺点:
  依赖中央服务器,存在单点故障的风险。
  1. 中央服务器宕机后,都无法协同工作
  2. 如果中央服务器的文件损毁,又没有备份时,丢失的数据无法找回

分布式版本控制系统  分布式版本控制系统( Distributed Version Control System,简称 DVCS )。在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。


http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(17).png  优点:
  1. 适合分布式开发,强调个体
  PS:允许支持上千个并行开发的分支
  2. 公共服务器压力和数据量都不会太大
  3. 速度快、灵活
  PS:特别在打分支和打Tag时候
  4. 任意两个开发者之间可以很容易的解决冲突
  5. 离线工作
  PS:本地仓库
  缺点:
  代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

分支  Git最关键地方即是分支,分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。如果要了解Git,这个是最重要的,可以查看下面学习资料。


学习资源  这一篇文章纯粹只是记录一些东西,并不会讲Git的工作原理、怎么用,因为资料已经非常完善了,使用到时查看即可。
  1. 廖雪峰Git教程(中文)
  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000

2. 图解Git/图形化的Git参考手册(了解原理非常有用)  http://blog.jobbole.com/22647/
  3. Git官方教程(英文)
  http://git-scm.com/blog
  4. Git - 生成 SSH 公钥
  https://git-scm.com/book/zh/v1/服务器上的-Git-生成-SSH-公钥
  下载Git
  1. window git安装包
  https://git-for-windows.github.io/
  2. mac
  Git安装工具:http://sourceforge.net/projects/git-osx-installer/
  通过Xcode安装:Xcode->Preferences->Downloads,选择“Command Line Tools”
  Eclipse Git
  我是个懒人,不喜欢打命令去操作Git,可视化操作才是我想要的,所以就找了在Eclipse上使用Git方法。
  1. Eclipse上安装GIT插件EGit及使用
  http://yufenfei.iteye.com/blog/1750124/
  2. 解决eclipse中egit中的cannot open git-upload-pack问题
  http://www.xuebuyuan.com/1587775.html
  总结
  使用什么版本控制工具,无论是集中式或分布式,没有谁绝对取代谁,存在都是原因的,各有各自的适用场景。
  附录
  下面记录一些命令,来源于培训教程
  创建Git仓库
  初始化Git仓库
  

$ git init    

  配置用户信息
  

$ git config user.name 'someGuy'  
$ git config user.email 'someGuy@bingo.com'
  

  添加文件
  创建一个文件
  

$ touch README.md  

  查看仓库当前状态
  

$ git status  

  添加文件到暂存区
  

$ git add .  

  提交暂存区文件到仓库
  

$ git commit -m 'add README.md file'  

  提交修改
  将修改添加到暂存区
  

$ git add README.md  

  将暂存区中的修改提交到仓库
  

$ git commit -m 'edit README.md'  

  撤销
  撤销add到暂存区的操作
  

$ git reset HEAD README.md  

  撤销对文件所做的修改
  

$ git checkout — README.md  

  将暂存区中的修改提交到仓库
  

$ git commit -m 'edit README.md'  

  版本回滚
  查看提交历史记录
  

$ git log  

  回到上次的提交
  

$ git reset --hard README.md  

  返回最近的提交
  

$ git reset --hard 0ff9  

  链接到远程仓库
  添加远程仓库
  

$ git remote add origin git@git.bingosoft.net:gongke/GitLession.git  

  提交代码到本地仓库
  

$ git commit -a -m '将要提交到远程'  

  将本地的master分支推送到远程的origin分支,并与之建立连接
  

$ git push -u origin master  

  在分支上提交、合并分支
  修改若干文件,提交
  

$ git commit  

  切换回master分支
  

$ git checkout master  

  合并分支
  

$ git merge dev  

  删除分支
  

$ git branch -d dev  

  有冲突的合并
  新建一个分支并切换到它
  

$ git checkout -b new_feature  

  合并分支
  

$ git merge new_feature  

  若没有发生冲突则会自动生成一个提交若发生冲突,则需要手动解决冲突,再提交
  

$ git add conflict_filegit commit - m 'conflict solved'  

  打标签
  创建标签
  

git tag v1.0
  
git tag -a v1.1 -m '1.1>  

  查看标签
  

git tag  

  删除标签
  

git tag -d v1.0  

  把标签推送到远程
  

git push  --tag  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435536-1-1.html 上篇帖子: git分支管理之多人协作 下篇帖子: oschina git 私有项目使用。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表