#git与SVN的区别
1、定义不同
svn:Apache Subversion是Apache许可证下的开源软件版本和版本控制系统。
git:Git是由Linus Torvalds在2005年开发的开源分布式版本控制系统。它强调速度和数据完整性。
2、模型类型不同
svn:svn是集中式模型。
git:Git 是一个分布式模型。
3、存储单元不同
svn:SVN按照原始文件存储,体积较大。SVN是按文件所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
git:Git按照元数据方式存储,体积很小,GIT把内容按元数据方式存储,如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
4、是否拥有全局版本号
Git没有一个全局版本号,而SVN有——目前为止这是跟SVN相比Git缺少的最大的一个特征。
5、内容完整性不同
Git的内容的完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
6、版本库不同
svn:SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。
git:Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库发生了什么事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库。
7、克隆目录速度不同
克隆一份全新的目录以同样拥有五个分支来说,git要快于svn,SVN是同时复制5个版本的文件,也就是说重复五次同样的动作。而Git只是获取文件的每个版本的元素,然后只载入主要的分支(master),克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时,而Git只用了区区的1分钟!
8、分支不同
svn:分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。
git:处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
9、创建目录不同
svn:在SVN中,我们在每个文件夹中创建.svn目录。
git:在 git 中,我们只创建 .git 目录。
10、特点不同
svn:
- 目录已版本控制
- 复制、删除和重命名。
- 自由格式的版本化元数据 。
- 原子提交。
- 分支和标记。
- 合并跟踪。
- 文件锁定。
git:
- 分布式系统。
- 分支。
- 兼容性。
- 非线性开发。
- 轻。
- 开源。
#git配置公钥与私钥
1、本地安装好git
;
2、桌面右键 Git Bash Here
打开git命令行;
3、ssh-keygen -t rsa -C "你的邮箱"
(全部按enter);
4、cd ~/.ssh
(如果没有执行第三步,则不会有这个文件夹);
5、cat id_rsa.pub
在命令行打开这个文件,会直接输出密钥;
6、复制,打开github
,点自己头像 >> settings >> SSH and GPG keys >>New SSH key
7、title
随便写。 key里
粘贴第六步的内容;完成。
git
配置用户名与邮箱
git config --global user.name 用户名
git config --global user.email 邮箱
git
分支
查看本地分支
git branch
查看远程分支
git branch -r
查看本地和远程分支
git branch -a
切换分支
git checkout -b 本地分支名
删除本地分支
git branch -d
会在删除前检查merge
状态(其与上游分支或者与head
)。
git branch -d 本地分支名
git branch -D
是git branch --delete --force
的简写,它会直接删除。
git branch -D 本地分支名
删除远程分支
git push origin --delete 远程分支名
git
暂存
1、git stash
把改动的代码暂存到起来 2、git stash list
显示暂存代码的列表 3、git stash pop stash@{id} git stash apply stash@{id}
恢复暂存区 git stash pop stash@{id}
命令会在执行后将对应的stash id
从stash list
里删除,而 git stash apply stash@{id}
命令则会继续保存stash id
4、git stash drop <stash@{id}>
删除暂存 不加id就是删除最新的 git stash clear
是清除所有stash
git
回退代码
- 查看
commit
信息列表
bash git log
- 截取部分
commit
的id
,用来回退
bash git reset --hard 'commit_id'
- 强制提交
bash git push --force
开发的时候需要创建几个分支版本?
常驻分支
git仓库中一般可以设置三条常驻分支,分别是master分支、alpha分支、dev分支。master分支用于正式发布,alpha分支用于QA测试,dev分支用于日常开发和联调。常驻分支之间的merge操作使用—no-ff参数。
master分支
git主分支的名字,默认是master,代码库要有且仅有一个主分支,所有提供给用户使用的正式版本,都在这个分支上发布。master分支的每次上线都要打一次Tag。
alpha分支
主分支只用来发布重大版本,QA测试等应在alpha分支上进行,如果想正式对外发布,需在master分支上。
dev分支
主分支只用来发布重大版本,alpha分支用来做发布之前的测试,日常开发和联调应在dev分支上进行。
临时分支
日常中一些特定版本的开发应使用临时分支进行,使用完之后要删除,以使代码库的常驻分支始终只有master、alpha、dev。
feature分支
feature分支是为了开发特定功能,从dev分支上分出来的分支,开发完成之后要并入dev分支。feature分支的命名采用feature-*的形式。
hotfix分支
软件正式发布之后,如果出现需要紧急修复的bug,这时需要创建一个分支进行紧急修复。hotfix分支是从master分支上面分出来的,bug修补结束后再合并进master和dev分支。hotfix分支的命名采用hotfix-*的形式。
# git流程
1. 安装git
[https://git-scm.com/](https://git-scm.com/)
验证安装
```powershell
git --version
```
shit + 右键 查看右键菜单
2. 配置git的用户名和邮箱
```powershell
git config --global user.name 'yourname'
git config --global user.email 'youremail.com'
```
3. 初始化仓库/克隆远程仓库
```powershell
git init // 初始化本地仓库
git clone 'https://github.com...'
```
4. 配置.gitignore
5. 配置远程仓库地址(可选)
1. 初始化远程仓库,获取仓库地址
2. 配置SSH密钥(可选)
3. 本地仓库关联远程仓库
```powershell
git remote add origin='https://github.com...'
```
6. 新建并修改本地文件
7. git add暂存
8. git commit -m ‘提交信息’ 提交
9. git push -u origin master 推送
10. 分支相关
新建分支 git branch ‘分支名’
查看分支 git branch
切换分支 git checkout ‘分支名’
合并分支 git merge ‘分支名’
拉取代码 git pull
推送更新 git push
11. 解决冲突
更多请看:13.git面试题_进击の小胖墩的博客-CSDN博客r
此章内容部分为网上借鉴内容,如有不满请联系删除