Git与SVN的安装配置

qiang.zhang大约 6 分钟

Git与SVN的安装配置

Git

  1. 官网下载对应的安装包无脑下一步安装完毕
  2. 基础配置:

## 用户信息
git config --global user.name "eaaomk"
git config --global user.email eaaomk@163.com
git remote add origin https://gitee.com/serendipity-z/blognext.git
git push -u origin "master"

## 设置文本编辑器  Vim 或者 emacs
git config --global core.editor emacs

## 差异分析工具
git config --global merge.tool vimdiff

## 查看配置信息

vim ~/.gitconfig 

git config --list
  1. 常用命令:
命令说明
git init初始化仓库。
git add .添加文件到暂存区。
git commit将暂存区内容添加到仓库中。
创建仓库命令
git init初始化仓库
git clone拷贝一份远程仓库,也就是下载一个项目。
提交与修改
git add添加文件到暂存区
git status查看仓库当前的状态,显示有变更的文件。
git diff比较文件的不同,即暂存区和工作区的差异。
git commit提交暂存区到本地仓库。
git reset回退版本。
git rm将文件从暂存区和工作区中删除。
git mv移动或重命名工作区文件。
提交日志
git log查看历史提交记录
git blame (file)以列表形式查看指定文件的历史修改记录
远程操作
git remote远程仓库操作
git fetch从远程获取代码库
git pull下载远程代码并合并
git push上传远程代码并合并
git branch (branchname)查看分支,创建新分支
git checkout (branchname)切换分支
git merge合并分支
git clean -df删除本地新增文件
git checkout .删除本地修改
git rebase重置索引head的指向
git branch -vv查看分支信息
git branch -d (branchname)删除指定分支
git brnach -b (branchname)创建新分支并切换到此新分支上
git commit -m ""附带提交信息的提交
git commit --amend追加提交
git reset HEAD^回退上一次提交
  1. linux上简化命令操作
#!/bin/bash


#####################
### Author: eaaomk
### blog: https://eaaomk.github.io/blog/
### des: 执行此脚本,将下列快捷命令书写到linux 下的
###      .bashrc(root用户)文件中,.bash_profile是非管理员用户会走的路径
#####################

thisecho(){
echo '

echo "---bash profile====="
source ~/.bashrc

ap(){
	# Automatic push
	value=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`
	if [ -z "$value" ]
	then
		echo -e "\e[1;31m push to the default branch \e[0m" 
		temp=`git branch -r | grep m/master`
		real_url=${temp#*->}
	else
		real_url=$value
		echo -e "\e[1;31m current branch is ${real_url} \e[0m" 
	fi
		git push origin HEAD:refs/for/${real_url#*/}
}

acp(){
	# Automatic commit and push
	ac
	ap
}

ac(){
# Automatic commit
read -p "BUG ID: " msg1
	read -p "DESCRIPTION: " msg2
	echo "
BUG ID:$msg1
DESCRIPTION:$msg2" | git commit -F-
}
'>> ~/.bash_profile

sync

source ~/.bash_profile
}

thisecho

SVN

SVN是版本控制工具,安装步骤:

步骤01 在本机上安装TortoiseSVN。首先下载TortoiseSVN安装包,然后在安装时选择command line client tools,这样安装后在bin目录下才能找到命令行工具svn.exe。

步骤02 在Android Studio中配置TortoiseSVN的命令行工具。打开Android Studio,依次选择菜单File→Settings→Version Control→Subversion→user command line client,单击右侧的浏览按钮,选择本地安装的svn.exe的完整路径。

步骤03 在Android Studio中使用SVN检出项目。打开Android Studio,依次选择菜单VCS→Checkout from Version Control→Subversion,单击Repositories右方的加号按钮,在弹出的小窗口中输入SVN仓库地址,单击OK按钮,回到原窗口单击Checkout按钮,把项目检出到本地目录。

这里更推荐Git 工具

Git与SVN的不同

Git是分布式的,SVN是集中式的

SVN必须有一个服务器版本库就放在一个中央服务器。所有开发人员都是与服务器进行交互的。

Git更倾向于分布式开发,每台计算机上都有一个完整的本地版本库,和服务器上的一模一样。所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作。也有中心服务器,仅仅是为了方便交换大家的修改。

去中心化的好处?

操作处理速度快

安全性更高。Git每个人的电脑都有完整的版本库,SVN集中式版本控制的中央服务器要是出了问题,所有人都没法干活了,一次需要定期备份,并且是整个SVN都得备份

不依赖网络

Git把内容按元数据方式存储,而SVN是按文件

SVN保存前后变化的差异数据

Git只关心文件数据的整体发生变化,更像是把文件做快照,文件没有改变时,分支只想这个文件的指针不会改变,文件发生改变,指针指向新版本

Git没有一个全局版本号,而SVN有

SVN版本号进行控制,每次操作都会产生一个高版本号

Git采用40 位长的哈希值作为版本号,没有先后之分

Git的内容的完整性要优于SVN

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏

分支不同

Svn 创建分支,其实就是创建了一个新的文件夹(目录)并拥有实际的文件的。相当于拷贝了一份源文件。创建完分支后,影响全部成员,每个人都会拥有这个分支。拉分支相当于copy时间较慢。多分支并行开发较重。

Git可以在任意一个提交点(commit point)开启分支,并没有创建文件夹,你甚至看不到任何的改变。创建一个分支,就是多了一个索引文件,记录这个分支的变化,占用很小的空间。拉分支时间较快,拉分支只是创建文件的指针和HEAD。用户可以在同一个文件夹中,快速的切换不同的分支。每个分支,都是独立的,在这个分支里想做什么都可以,对其他分支没有一点影响。比较适合多分支并行开发。

管理权限不同

svn的权限管理相当严格,可以按组、个人针对某个子目录的权限控制

Git没有严格的权限管理控制,只有账号角色划分

工作流程不同

SVN每次更改文件之前都得update操作,有冲突,会打断提交动作

Git开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突。git的提交过程不会被打断,有冲突会标记冲突文件

Git与SVN对比

作用gitsvn
版本库初始化git initsvn create
clonegit clonesvn co(checkout)
addgit add (.除去.gitignore,*所有的文件)svn add
commitgit commitsvn commit
pullgit pullsvn update
pushgit push-
查看工作状态git statussvn status
创建分支git branch <分支名>svn cp <分支名>
删除分支git branch -d <分支名>svn rm <分支名>
分支合并git merge <分支名>svn merge <分支名>
工作区差异git differ (-cached / head)svn diff
更新至历史版本git checkout commitsvn update -r rev
切换taggit checkout tagsvn switch tag
切换分支git checkout branchsvn switch branch
还原文件git checkout - pathsvn revert path
删除文件git rm pathsvn rm path
移动文件git mv pathsvn mv path
清除未追踪文件git cleansvn status sed -e
Loading...