zoukankan      html  css  js  c++  java
  • Git是个好工具(转)

    Git是分布式版本控制系统,我们常用的版本控制工具还有SVN。这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统。

    集中化的版本控制系统

    集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )。这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

    优点:

    1. 每个人可以看到别人做了什么

    2. 管理员管理权限也比较简单

    缺点:

    依赖中央服务器,存在单点故障的风险。

    1. 中央服务器宕机后,都无法协同工作

    2. 如果中央服务器的文件损毁,又没有备份时,丢失的数据无法找回

    分布式版本控制系统

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

    优点: 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 released!'

    查看标签

    git tag

    删除标签

    git tag -d v1.0

    把标签推送到远程

    git push  --tag
    本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
     
  • 相关阅读:
    freeswitch与外部网关链接
    dojo中DateTextBox日期格式yyyy-MM-dd转化为数据库中yyyyMMdd
    dojo中取DateTextBox中的值两种方法
    视频编码与封装方式详解
    音频编码汇总
    FusionCharts 3D双柱状图
    FusionCharts 2D双柱状图
    利用merge优化
    FusionCharts 2D条状图
    全表扫描出现db file sequential read
  • 原文地址:https://www.cnblogs.com/softidea/p/5042523.html
Copyright © 2011-2022 走看看