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
    本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
     
  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/softidea/p/5042523.html
Copyright © 2011-2022 走看看