git 和svn 区别

各自介绍:

- SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,  

用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,  
需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,  
如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。
      
- Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,  
这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,  
那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,  

你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。  

git 安装:

- Window安装 
    + http://git-scm.com/download/win 下载Git客户端软件,和普通软件安装方式一样。
- Linux安装
    + CentOS发行版:sudo yum install git
    + Ubuntu发行版:sudo apt-get install git
- Mac安装

    + 打开Terminal直接输入git命令,会自动提示,按提示引导安装即可。

git常见操作:

1.配置用户 邮箱 意义在于记录开发者信息以及开发者的操作行为

git config --global user.name "git用户名"

git config -- global user.email "git邮箱" 

2.初始化仓库  需要将现有项目初始化为一个仓库

git init 

会创建一个.git的隐藏目录,这个目录就是存储历史版本的仓库

git clone 仓库地址

假如公司有项目已经用了git 利用克隆clone, 会在当前目录下生成一个目录,默认和仓库名称相同,这个便是公司项目代码

3.查看文件状态

新建文件后: 已修改状态

git status  状态为红色表示已修改  为绿色表示待提交 没有状态表示已提交(git会忽略空目录)

4.添加文件到暂存区

提交单个文件 git add test.txt 

提交单个目录文件 git add css

提交所有文件 git add .或* 或-A (我理解是all)

执行命令后: 已暂存状态

修改文件后: 已修改状态

5.提交代码  将暂存区文件,全部提交到本地仓库

git commit -m "提交文件的备注信息"

6.查看提交历史

git log

7.恢复上次提交

git reset --hard id前五个标识

早真实开发中.需求五花八门,同时开发多个需求的情况下,有可能要处理其他的BUG 这时希望保存当前任务进度,再去修改这个BUG,等BUG修复完成再继续我们的任务.

在我们初始化仓库的时候,git会默认帮我们创建一个master分支,并且有指针HARD指向末端,用来标明当前处于哪个分支的哪个版本

创建分支 loki分支

git branch loki

新的分支会在当前分支原有历史版本的结点上进行创建,新建的子分支会继承父分支的所有提交历史.

切换分支

git checkout loki

在loki的分支修改,  

再次提交代码 git add .  git commit -m "备注信息" 再次提交就好记录在loki 的分支上,并且HARD伴随loki移动,

4.切换到msater 分支 git checkout master

5.在master 继续开发

git add .

git commit -m "备注信息"

6. 合并loki分支

git merge loki

删除loki的分支

git branch -d loki


创建共享仓库

git要求共享仓库的一个以.git结尾的目录

mkdir repo.git 创建.git结尾目录

cd repo.git 进入这个目录

git init --bare 初始化一个共享仓库,也叫裸仓库, 但是这个空的仓库不允许在这个仓库进行

任何修改

2想共享仓库共享内容,

 进入到test目录

 git push ../repo.git master  这样便把test中的项目同步进了repo.git中。

3.从共享仓库里取出内容

1、新创建一个目录(模拟另一个开发者)

2、git clone ./repo.git demo

通过repo.git共享仓库,我们轻松得到了一个test的副本

4.通过demo仓库向repo.git共享内容
进入到demo里,我们做一些修改
cd demo
git push ../repo.git master
5.在仓库从repo.git获取共享的内容
cd test
git pull ../repo.git master
- 奇迹似乎发生了,我们轻松的将demo仓库里的内容,通过repo.git共享给了test仓库。
- 惊喜不断,问题也总是不断,我们发现我们这个共享的仓库只是放到了本地的,其它人是没有办法从我们这个共享仓库共享内容的!!!
- 然而现实是,办法总是有的,我们把这个共享的仓库放到一台远程服务器上,问题不就解决了吗?

你可能感兴趣的:(git 和svn 区别)