一、Git概述
1.1 Git简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(命令行和Linux很像)
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
特点:
速度
简单的设计
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
完全分布式
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
1.2 Git和SVN的区别?
SVN:是集中式版本控制系统,版本库集中放在*服务器,而开发人员在开发过程中,首先要从*服务器下载最新版本,开发完成后,再将自己开发的的代码提交到*服务器。
集中式版本控制工具缺点:服务器单点故障、容错性差
Git:是分布式版本控制系统,分为两类仓库:本地仓库、远程仓库
本地仓库:是在开发人员自己的电脑上的仓库
远程仓库:是在远程服务器上的Git仓库
代码托管中心:维护远程库
局域网下:GitLab
互联网下:GitHub(国外)、Gitee(码云国内)
Clone:克隆,将远程库复制到本地
Push:推送,将本地仓库代码上传到远程库
Pull:拉取,将远程仓库代码下载到本地仓库
1.3 Git工作流程
从远程仓库中克隆项目至本地仓库
从本地仓库checkout代码进行代码修改
在提交前将代码add至暂存区
commit至本地仓库,保存修改的各个历史版本
修改完成后,需要和团队成员共享代码时,将代码push到远程仓库
二、Git至码云(国内),GitHub(国外)
简介,可以将自己的笔记或是项目放上去。
2.1 打开Git Bash生成SSH公钥
命令行:ssh -keygen -t rsa -C “您的邮箱地址”,回车三次
通过路径找到公钥位置,以记事本或文本编辑器打开id_rsa.pub文件,复制
或使用命令行:cat ~/.ssh/id_rsa.pub 将文件打印至终端,复制
2.2 注册码云进入设置找到ssh公钥
点击确定,输入码云密码,添加成功
打开Git Bash测试,命令行:clear(清除窗口)
命令行:ssh -T git@gitee.com
连接成功!
2.3 在码云上新建一个仓库获取仓库地址
在码云首页找到仓库旁边有个+号,点击,新建测试仓库
进入仓库,如图,复制仓库地址
在团队开发中,会有多名成员,在仓库管理中可以通过仓库成员管理添加成员
2.4 本地文件上传到码云
打开需要上传的文件夹,右击打开Git Bash窗口
初始化一个本地仓库
命令行:git init
添加至暂存区
命令行:git add 文件全称(可以是文件夹,也可以是多个文件,空格隔开)
提交全部:git add .
commit提交至本地仓库
命令行:git commit -m “first commit”
添加远程仓库,码云上的测试仓库的地址
命令行:git remote add origin “远程仓库地址”
命令行(查看远程仓库):git remote -v
将本地仓库push至远程仓库
命令行:git push origin master
发生冲突,远程仓库也有readme文件,处理冲突,在第8点
选择舍弃线上文件,强制推送,git push origin master -f
远程仓库查看,成功上传
同步冲突
本文在码云平台创建仓库上已经存在readme文件,在提交时可能会存在冲突,这时您需要选择的是保留线上的文件或者舍弃线上的文件;
如果您舍弃线上的文件,则在推送时选择强制推送(加上-f)
git push origin master -f
如果您选择保留线上的readme文件,则需要先执行
git pull origin master
然后才可以推送
2.5 Git常用指令
将远程仓库克隆到本地
命令行:git clone 远程仓库地址
远程仓库
从远程仓库获取最新版本到本地仓库,不会自动merge,先初始化本地仓库,再添加远程仓库
命令行:git fetch origin master
从远程仓库获取最新版本并merge到本地仓库,先初始化本地仓库,再添加远程仓库
命令行:git pull origin master
本地仓库,查看仓库状态,修改了测试.txt里的内容由test1改为test2,(提示要提交至本地仓库,先add至暂存区,commit至本地仓库)
命令行:git status
简洁:git status -s
查看版本号
命令行:git log
简化信息命令行:git log --pretty=oneline
版本回退
在 Git 中,用 HEAD 表示当前版本,也就是最新的提交 commit id,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当然往上 100 个版本写 100 个 ^ 比较容易数不过来,所以写成 HEAD~100。
命令行:git reset --hard HEAD^ (回退上一个版本)
测试.txt文件内容回退为test1
删除文件
命令行:git rm 文件全称