目录
1.Git、Github、GitLab的介绍
2.分布式版本控制系统 和 集中式版本控制系统
3.Github的使用
4.GitLab的使用(个人)
5.Sourcetree的使用
6.git终端命令的简单使用(含git命令大全)
7.SSH Key
一、Git、Github、GitLab的介绍
GitHub 和 GitLab 都是基于 web 的 Git 仓库,使用起来二者差不多,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。
- Git:是一个版本控制系统,是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。Git 是分布式版本控制系统。
- Github:提供公有仓库和私有仓库,私有仓库是收费的。
- GitLab:可以免费创建私人仓库(优势:允许免费设置仓库权限、允许用户选择分享一个 project 的部分代码、 允许用户设置 project 的获取权限进一步提升安全性、可以设置获取到团队整体的改进进度、通过 innersourcing 让不在权限范围内的人访问不到该资源)
所以,从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。
二、分布式版本控制系统 和 集中式版本控制系统
- 分布式版本控制系统:不依赖于中央服务器
- 集中式版本控制系统:SVN、CVS,它们都有着一个单一的集中管理服务器(中央服务器),该服务器保存了所有文件的修订版本,协同合作的开发人员都通过客户端连接到这台服务器,取出最新的文件或者提交更新。
- 两者的工作原理
分布式版本控制系统:拉去最新版本 ---> 本地修改文件 ---> 提交到本地仓库 ---> 推送到远程仓库(我们使用相关的客户端提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。并且,即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上。说白了就是本地电脑里不用联网也可以查看历史版本的哦~)
集中式版本控制系统:从中央服务器上拉取最新的版本 ---> 本地修改文件 ---> 提交到中央服务器上 (缺点:需要联网,历史仓库在中央服务器上)
三、Github的使用
- 1.申请github平台账号并登陆
- 2.New新建一个仓库
- 3.填写仓库信息并点击Create repository创建仓库(到此你已经成功在github平台上创建了一个仓库,接下来将会使用Sourcetree工具或者git终端命令去继续使用仓库,请继续往下看)
注意⚠️:Initialize this repository with a README这个勾选项是你本地电脑已经存在了git仓库时不要勾选,如果你还没有本地git仓库时勾选它,这里我以没有本地git仓库为例。
四、GitLab的使用(个人)
- 1.申请github平台账号并登陆(这里我用github账号登陆的)
- 2.Create一个新的仓库
- 3.创建一个空白项目
- 4.填写仓库信息
- 5.创建项目仓库(到此你已经成功在gitlab上创建了一个自己的仓库了)
五、Sourcetree的使用
Sourcetree简介:这个工具简化了您与Git存储库交互的方式,因此您可以专注于编码。通过Sourcetree的简单Git GUI可视化和管理您的存储库。 工具下载地址:https://www.sourcetreeapp.com
- 1.在上面我们分别在Github和GitLab上创建了我们的仓库,现在我们拿Github仓库远程地址来看看如何使用,这一步就是获得git仓库远程地址,拷贝下来链接
- 2.下载并安装Sourcetree工具,然后打开该工具
- 3.点击新建,选择从URL克隆
- 4.创建一个空的文件夹,用来保存我们的远程仓库(保存在本地的叫做本地仓库)
- 5.源URL是我们远程仓库的地址,路径是我们本地新建文件夹的路径,然后点击克隆,这时本地已经成功克隆了远程仓库。恭喜了。
- 6.修改本地仓库的README文件(随便写个字符串)
- 7.选中改变的文件放到暂存区
- 8.输入本次提交的信息
- 9.点击提交
- 10.如果你本地仓库代码不是最新的就需要拉取下来(没有直接略过)
- 11.推送到远程,如果有冲突解决冲突再提交然后推送到远程就可以了。到此你已经学会了SourceTree的使用了
六、git终端命令的简单使用
终端Terminal简介:苹果的终端应用程序是OS X的bash shell的直接接口,它是UNIX基础的一部分。我们可以使用终端来管理我们的git仓库 打开终端下载git:使用Homebrew安装Git,如何安装HomeBrew在我之前的文章中有详细记载~ 命令:brew install git
- 1.克隆 --- 克隆远程仓库到本地
cd 新建文件夹的目录路径
gjt clone 仓库远程地址
- 2.修改 --- 在刚才克隆下来的本地仓库文件夹中放入你想要存放的文件
- 3.提交 --- 将想要存放的文件提交到远程仓库上
cd 刚才新建的iOS工程路径下
git add . // 文件添加到暂存区(.代表提交所有文件)
git commit -m "First Commit" // 把文件提交到仓库
git push // 上传到远程仓库
git终端命令大全
1.全局设置提交用户名称和邮箱
git config --global user.name "hahaha"
git config --global user.email "hahaha@163.com"
2.初始化仓库
git init
3.添加到暂存区
git add readme.txt
4.提交到版本库
git commit -m “wrote a readme file”
5.git状态(有无未添加到暂存区/提交到版本库内容)
git status
6.查看文件有哪些改动
git diff readme.txt
7.提交记录
git log/$ git log --pretty=oneline
8.回退一个提交
git reset --hard HEAD^
9.看文件
cat readme.txt
10.回退到指定提交
git reset --hard 1094a
11.所有提交记录
git reflog
12.撤销工作区某文件的修改
git checkout – readme.txt
13.回退暂存区修改回工作区
git reset HEAD readme.txt
14.生成密匙
ssh-keygen -t rsa -C “youremail@example.com”
15.添加远程仓库
git remote add origin git@github.com:hahaha/haha.git
16.推送到远程仓库(绑定)
git push -u origin master
17.推送到远程库master分支
git push origin master
18.克隆
git clone 仓库地址
19.创建并切换分支
git checkout -b dev
20.创建分支
git branch dev
21.切换分支
git checkout dev
22.查看所以分支
git branch
23.将dev分支合并到当前分支
git merge dev
24.删除dev分支
git branch -d dev
25.冲突后修改本地文件后提交即可处理冲突
git add readme.txt
26.查看所以提交一行展示
git log --graph --pretty=oneline --abbrev-commit
27.合并分支(不使用快进方式,保留了被合并分支的提交记录)
git merge --no-ff -m “merge with no-ff” dev
28.隐藏工作区修改
git stash
29.查看隐藏列表
git stash list
30.恢复隐藏回工作区
git stash apply
31.删掉隐藏记录
git stash drop
32.恢复指定隐藏
git stash apply stash@{0}
33.强制删除某分支
git branch -D feature-vulcan
34.查看远程库
git remote
35.远程库详细信息
git remote -v
36.推送到远程库dev分支
git push origin dev
37.本地创建dev分支并关联远程dev分支
git checkout -b dev origin/dev
38.拉取远程仓库到本地库
git pull
39.第一次拉取可能不成功,应为未建立连接,需要建立下连接
git branch --set-upstream-to=origin/dev dev
40.提交记录处理为一条直线记录
git rebase
41.添加版本
git tag v1.0
42.查看所以版本
git tag
43.给指定提交添加版本号
git tag v0.9
44.查看版本
git show v0.9
45.给指定提交指定版本号和备注信息
git tag -a v0.1 -m “version 0.1 released” 1094adb
46.删除某版本
git tag -d v0.1
47.推送本地版本到远程库
git push origin v1.0
48.推送所以本地版本到远程库
git push origin --tags
49.先删除本地版本信息
git tag -d v0.9
50.再删除远程版本信息
git push origin :refs/tags/v0.9
51.配置git信息(分颜色显示信息).gitignore文件
git config --global color.ui true
七、SSH KEY
ssh是一种安全的传输模式,github要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码,用以验证你是否为合法用户,为了省去每次都要输入密码的步骤,采用公钥、密钥,也就是SSH KEY 来验证你是否为合法用户,在你的电脑生成了一个唯一的ssh公钥和私钥,公钥放到github上面,当你推送的时候,git就会匹配你的私钥是否跟github上面的公钥是配对的,正确就认为你是合法的,允许推送。SSH KEY 可以理解为是你的身份标识,放在github上面表明你是这个项目的一个开发人员,但是别人是可以截获的,你本机的私钥别人就无法截获,SSH KEY 就可以保证每次传输都是安全的。
- SSH KEY的使用:
- 1.ssh-keygen -t rsa -C "hahaha@163.com" // 创建SSH KEY
- 2.open .ssh/id_rsa.pub 或 cat .ssh/id_rsa.pub // 打开SSH文件夹目录复制Key
- 3.github平台上设置刚才复制的key // 复制key
- 4.ssh -T git@github.com // 链接验证SSH是否成功
友情提醒:
1.如果你想要使用 SSH url 克隆的话,你必须是这个项目的拥有者。否则你是无法添加 SSH key 的。
2.创建成功后会在~/路径下找到该.ssh文件夹,进去打开id_rsa.pub,这里面就是这个key了