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 "[email protected]"
核心:生成用户对应的ssh密钥(用户名-邮箱-ssh密钥三者一一对应);默认地址为C:\Users\计算机用户\.ssh目录下,其中id_rsa是私钥,id_rsa.pub是公钥,复制公钥内容提供给ssh服务器(如github)后就能使用ssh远程对接功能。
ssh-keygen -t rsa -C "[email protected]"
此处还要设置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 [email protected]: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
克隆地址:
[email protected]: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.exe、git.exe、git-receive-pack.exe和git-upload-archive.exe这4个文件复制到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的搭建博客很多,但我希望大家:知其然,知其所以然,希望本篇文章能给大家带来帮助!