一张图读懂SVN和Git原理(附环境搭建和使用)

来源:互联网 发布:android内存优化方法 编辑:程序博客网 时间:2024/06/18 12:20

SVN和Git的个人笔记和总结,仅供参考和学习,欢迎分享!

先上图(个人整理):


讲概念(个人理解):

SVN:全称Subversion,是一种集中式管理的版本控制工具,分为服务器(VisualSVN)客户端(TortoiseSVN或SVN插件),客户端每次完成或修改代码需要联网提交服务端(即版本库Repository)进行存储,冲突主要源于时效性,操作重点在于先更新再提交

Git:是一种分布式管理的版本控制工具,分为远程版本库(如Github)本地版本库(.git节点)每个节点都是自己服务器兼客户端(git没有服务器和客户端的说法),完成或修改代码时直接提交到本地版本库节点,无需联网;只有推送和克隆版本库Repository时需要联网和远程版本库进行ssh对接

每个.git节点的工作机制是:从远程获取或创建工作区(此时为相对主分支master), 经过代码修改更新后(此时为dev分支)add到暂存区,然后commit到分支(即branch)进行管理,再推送到远程库,此过程中会对比master和dev两种分支是否冲突,如果冲突会通过head指针进行分支的合并(合并后为新的相对主分支master),然后进行ssh对接将合并后的本地版本库推送到远程库。

Github:是储存版本库Repository的工具以及一个SSH服务器,提供代码管理服务。Github上的代码是public的,private的收费。

SSH:一种远程登陆和控制主机进行指令操作的手段,提供了公钥和私钥(不需要提供主机管理员帐户和密码进行连接)避免了直接使用密码输入登陆的不安全性和密码泄露问题,分为服务器(如Copssh)客户端(putty),其公钥(  id_rsa.pub)加密,私钥(  id_rsa)解密。

软件介绍(个人推荐):

Copssh:用于搭建ssh服务器的工具,常用于搭建公司内部Git的ssh本地服务器(需要复制Git部分文件);

VisualSVN:用于搭建svn服务器的工具,主要功能为用户版本控制和版本库存储;

TortoiseSVN : 封装了SVN客户端核心并进行优化后的SVN客户端工具,作用等价于SVN插件,但细节方面做得美观和优化。

Git : 为git的核心工具,其window版本又称为msysgit,默认使用ssh进行远程推送(即含ssh客户端),等同git插件作用但功能更强大。

TortoiseGit:依赖于Git才能使用的工具(必须安装Git),对Git进行了封装和优化、美化(即“包装壳”),并集成了ssh客户端putty工具的功能,没有完全不影响Git的使用。


SVN和Git的环境搭建:

(1)SVN的使用

SVN的服务器搭建:



SVN的客户端搭建:

安装省略,使用步骤:

a、任意位置右击SVN Checkout检出得到版本库和工作区间(含有.svn文件夹的demo1)  

b.   更新项目demo1完成后,在.svn文件夹所在的项目目录/demo1先右击选择SVN Update操作,然后右击选择SVN Commit操作。



Eclipse中的SVN插件的使用(打开SVN资源库窗口---右击SVN检出---代码编辑、更新---SVN更新---SVN提交


(2)Git的使用

1、Github的使用

***********************************************************************************************************************


***********************************************************************************************************************

***********************************************************************************************************************

***********************************************************************************************************************

***********************************************************************************************************************

***********************************************************************************************************************

***********************************************************************************************************************



2、Git工具的下载安装


3、Git的常用命令:

(1)配置用户信息及相应的ssh密钥(以用户admin为例)

告诉ssh服务器(如github)你是谁?(随意填,对应本地登录的计算机用户)

git config --global user.name "admin"
git config --global user.email "admin@gmail.com"

核心:生成用户对应的ssh密钥(用户名-邮箱-ssh密钥三者一一对应);默认地址为C:\Users\计算机用户\.ssh目录下,其中id_rsa是私钥,id_rsa.pub是公钥,复制公钥内容提供给ssh服务器(如github)后就能使用ssh远程对接功能。

ssh-keygen -t rsa -C "admin@gmail.com"

此处还要设置ssh远程连接密码 Enter Passphrase ...


(2)Git基本使用流程


(3)Git分支branch:

分支名自定义,如常用的origin;主分支master和其他分支dev只是个相对概念,可以认为master是存放某一个分支的特定容器(master容器规则:新分支会自动替换旧分支);遇到冲突时需要进行分支合并,否则无法推送到远程库。

git branch dev1    创建dev1分支git checkout master    切换到主分支(相对概念,代指某个特定分支)
git branch    查看当前分支
git merge  dev1   将指定分支dev1合并到当前分支
git branch -d dev1   删除dev1分支

(4)Git其他命令:如版本回退、标签管理、bug分支管理(参考度娘)

git status    查看仓库状态
git log --pretty=oneline   查看历史纪录
git reset --hard 2e655fdf(提交版本号commit id)  回退到某个版本
git clone git@github.com:test/testgit.git    克隆远程库
4、Eclipse中Git插件的使用

***************************************************************************************************************

***************************************************************************************************************


5、Github静态页面展示 

(1)在Github上创建一个版本库,格式按 "zyp168:\zyp168.github.io.git"为例子 (zyp168为本人Github帐户名称)。

(2)编写一个静态HTML5项目(或下载一个模板),要求有index.html主页(放在项目第一目录下),并推送到Github上

(3)在Github主题管理上添加主题,然后发现自动生成一个_config.yml文件,可进行相关配置。

(4)网址访问"zyp168.github.io",即可展示你的index.html主页

(5)有自主域名的可以添加CNAME文件,将访问网址改为你的自定义网址。(如:本人改为readme.zyp168.cn作为我的网上简历)

详细可参考: 

https://github.com/zyp168/zyp168.github.io

克隆地址:

git@github.com:zyp168/zyp168.github.io.git

最终效果图:

6、Github搭建个人静态博客

用到 node.js和hexo博客框架,详细见度娘,由于csdn和博客园足够满足需要,除了练手熟悉外,个人觉得没有实用价值!

7、搭建本地Git服务端(Copssh搭建SSH服务器)               

       Copssh + Git  +  TortoiseGit [可选项]

(1)Copssh安装和使用(收费,百度有Copssh4.1.0的破解版)

   强烈建议使用兼容模式和管理员模式进行安装和使用,并关闭防火墙。



安装后俄目录布局


(2)至此, ”ssh服务器”  搭建完毕,但要使其成为”git的ssh服务器“,须进行以下操作(修改后重启服务)

安装完成后还有两个操作:

1、将Git安装目录D:\Program Files\Git\mingw64\libexec\git-core文件夹下的git-upload-pack.exegit.exegit-receive-pack.exegit-upload-archive.exe4个文件复制到SSH的安装路径D:\ICW\bin下。

2、将Git安装目录D:\Program Files\Git\mingw64\bin\libiconv-2.dll复制到D:\ICW\bin下。

(3)仿照git配置用户信息及相应的ssh密钥,然后将公钥提供给Github的过程(此处提供给Copssh)


新建计算机用户test------将test添加到Copssh-------注销后登录test------使用git命令生成test用户的密钥(该过程参见git配置用户信息及相应的ssh密钥)------将生成的密钥(C:\Users\test\.ssh文件夹)中的公钥提供给Copssh


提供的过程如下:

a、找到D:\Program Files (x86)\ICW\home\test\.ssh创建文件authorized_keys(注意没有扩展名,Copssh默认识别的名称,勿重命名)

b、将公钥内容复制到你创建的文件authorized_keys中

c、重启Copssh服务发现,keys...中出现了可用的公钥  


如果重启失败关闭,并提示运行buzhengque,则使用兼容模式重新启动即可!


由上过程可知Copssh和Github相比,只提供了git的ssh服务器功能,并没有提供git的版本库存储功能,毕竟分布式的概念在于每个节点都有存储备份,因此该公共远程版本库缺少一份备份并不影响。


注意:上述创建的Copssh的管理员Git实际就是你安装Copssh时登陆的计算机账户,因此注销后发现并没有Git用户登陆的图标。

所以为了防止混淆,我在上述流程中新建了一个test计算机用户进行模拟,如果要使用Copssh管理员(即Git用户),只需要用你安装Copssh时的那个计算机用户,使用git命令生成的公钥提供给D:\Program Files (x86)\ICW\home\Git \.ssh即可。

(4)测试,修改和推送到远程库

此时的远程库可以是Copssh中的任何一台计算机用户的主机(分布式),建议使用安装Copssh的那台主机充当公共版本库的存储地点 (作为Github)。


我知道网上Copssh的搭建博客很多,但我希望大家:知其然,知其所以然,希望本篇文章能给大家带来帮助!


原创粉丝点击