一、背景
linux系统,创始人linus,1999年研发之后即开源。 2002年前,都是linus手动合并到代码库中。
看中了BitKeeper,提供给linux免费试用权。 2005年,由于linux的一个大牛尝试破解BitKeeper。
话说两周之后,linus创建了新的版本管理工具git。
二、git & github
github是网站,是基于git的代码托管平台。
三、git安装
官网下载地址:https://git-scm.com/downloads
- 一直下一步直至安装完成 校验 :git --version 查看版本号
- 配合github,查看开源项目的代码 github官网:https://github.com/
以slf4j为例,它的代码地址:https://github.com/qos-ch/slf4j
1.找到【clone or download】按钮,点击download zip (并不常用)
2.git clone + 链接地址 ,代表将远程代码克隆到本地
例如: git clone https://github.com/qos-ch/slf4j.git
在命令提示符中,先找到要存储代码的位置,然后执行clone
直接下载一个项目文件夹到本地,打开项目时,
可能需要选中Add as Maven Project这一项(pom.xml上右键)
3.配置git,获取更改的权限。
配置项:用户名和邮箱 (从github上注册获取)
命令:
git config --list 显示配置列表
git config --global user.name "${用户名}"
git config --global user.email "${邮箱}"
4.可选的配置秘钥,才能使用以git开头的链接地址,
如git@github.com:qos-ch/slf4j.git (Use SSH按钮)
在本地生成秘钥
ssh-keygen -t rsa -C "${邮箱}"
执行命令后,会提醒你设置文件夹保存key,默认是.ssh文件夹
不设置密码直接回车后,生成id_rsa.pub秘钥文件
在github上配置秘钥
用户右键 -> settings -> SSH and GPG keys -> new ssh key
验证是否添加成功
使用ssh -T git@github.com
或者直接执行 git clone git@github.com:qos-ch/slf4j.git
四、git使用
1)仓库,管理项目的最基础目录。
在github上创建。 然后clone到本地。会提醒这是一个空的仓库。
1.创建文件并提交的步骤
创建新文件后,会询问是否添加到git中,选择是。
如果文件是红色的,代表没有加入,
要通过手动添加的方式——> 项目右键 -> Git -> Add
文件从红色变为绿色,可以提交和推送。
项目右键 -> git -> commit file -> 在commit message中写上更改的备注 -> 选择commit and push -> 可以在github中看到更改和提交记录。
文件从绿色变为白色,代表和远程仓库是一致的。
2.要对文件进行更改的处理
在commit file中双击文件,可以查看到修改的内容的(和上一个版本比较)。
2)查看提交历史
git -> show history
展示谁在什么时间进行了什么修改。
查看某次提交所有相关的文件
在提交记录上右键 -> show all affected files
并且双击文件本身,可以查看对应的修改
3)回退
文件更改后,状态由白色变为蓝色。
回退更改 文件右键-> git -> revert -> 确认
回退提交 执行命令 git reset --hard HEAD~
- –hard代表强制执行
- HEAD~代表上一次提交 ~可以加上数字
- HEAD~2返回上上次提交
五、git的理论知识
1)工作区和暂存区
工作区:就是存放代码的地方 (项目文件夹)
暂存区:临时存放改动的地方 (通常在新建文件时使用)
本地仓库:安全存放代码的地方
远程仓库:(github)
git add 将代码从工作区 -> 暂存区 (把文件托管git)
git commit 将代码从暂存区 -> 本地仓库 (存在一笔提交记录)
git push 将代码从本地仓库 -> 远程仓库 (促进多人合作)
2) 分支(平行时空)
互不影响又同时进行的合作方式
创建仓库时,自动创建一个master主干。
具体使用场景:
master 一般用来存放已上线的代码
开发新的功能时,创建新的分支,每个人使用自己的分支。
最终还是要合并的。 但是合并分支往往要解决冲突。
六、分支使用
1)创建分支
git branch + {分支名}
默认拉取master上代码到新创建的分支中
git checkout + {分支名}
通过查看git branch结果中 * 所在的位置,来定位分支
2)合并分支
master -> test
首先当前分支是需要合并过来代码的分支(master)
git merge test 效果是test的最新提交的代码会出现在master中。
3)冲突解决
项目右键 -> git -> conflicts resolved
三个对比框 最左侧是当前分支的代码(master) 最右侧待合并的分支代码(test) 中间想要的合并结果
4)推送到远程仓库
git push origin test:test
test:test 冒号前代表 本地分支的名字
冒号后代表 远程分支的名字
七、git仓库
分为本地仓库和远程仓库
- git init 新建一个本地代码库
- git clone 从远程拷贝
- git pull(拉取) 拿到远程仓库的修改
- git push(推送)提交给远程仓库修改
如果要创建一个自己的分支 确认要拉取代码的分支
确保是最新代码 git pull
然后执行创建分支的流程(从master拉取)
如果需要,再合并一次代码
写好代码后,再推送给远程仓库
让代码可以上线,将分支代码再合并回master中
八、git和svn那些事
git是分布式,svn是集中式的 git支持离线,svn必须联网
git学习成本高,复杂概念多,svn更简单
git一入深似海,从此svn是路人。
git分支廉价,svn分支昂贵
九、svn - 版本控制工具
1.下载安装 官网地址:https://subversion.apache.org/packages.html 找到最下方的
TortoiseSVN 小乌龟客户端
(验证:在文件夹中右键 能够看到svn checkout)
VisualSVN svn的服务端 找到VisualSVN Server的下载链接
链接:https://www.visualsvn.com/files/VisualSVN-Server-4.1.3-x64.msi
2.创建仓库、用户等 创建了用户、用户组,并且给用户组赋权 读写仓库。
3.下载代码 使用svn checkout时, 需要copy服务端仓库的url地址。 需要登录用户名和密码
4.提交代码 svn commit