一、Git的认识
1.1 版本控制
什么是"版本控制"?我为什么要关心它呢?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
a) 还原:如果你是程序开发者,在新写一个促销活动的java文件,两天后,项目经理说由于疫情原因促销活动取消了,让你还原到两天前的代码,如果没有版本控制.....,凉凉........。
如果有版本控制,可以轻松恢复到原先的样子, 额外增加的工作量也微乎其微。
b) 协作:支持多个开发并行开发,同时leader有利于review每个人每次提交历史与代码质量。
1.2常用的版本控制软件
SVN :
Subversion(SVN) 是一个开源的版本控制系統, Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
Git :
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
区别:
1.3Git 安装
ubuntu: apt install git
centos:yum install git
官网:https://git-scm.com/book/zh/v2/
1.4课堂问答
- Git的作用
- Git 与 SVN 区别点
二、创建本地版本库
1.git --help 查看常用命令
开始一个工作区
clone 克隆仓库到一个新目录
init 创建一个新的 Git 仓库
在当前变更上工作
add 添加文件内容至索引
mv 移动或重命名一个文件、目录或符号链接
reset 重置当前 HEAD 到指定状态
rm 从工作区和索引中删除文件
检查历史和状态
bisect 通过二分查找定位引入 bug 的提交
grep 输出和模式匹配的行
log 显示提交日志
show 显示各种类型的对象
status 显示工作区状态
扩展、标记和调校您的历史记录
branch 列出、创建或删除分支
checkout 切换分支或恢复工作区文件
commit 记录变更到仓库
diff 显示提交之间、提交和工作区之间等的差异
merge 合并两个或更多开发历史
rebase 在另一个分支上重新应用提交
tag 创建、列出、删除或校验一个 GPG 签名的标签对象
协同
fetch 从另外一个仓库下载对象和引用
pull 获取并整合另外的仓库或一个本地分支
push 更新远程引用和相关的对象
2.git init
创建一个新的Git仓库
3.git add <fileName>
添加文件内容至索引库
4.git status
查看仓库状态
5.git commit -m "解释说明"
提交⽂件到仓库
6.git log
查看提交日志
7.git branch
查看本地分支
8.git branch V2
创建名称为"V2" 的分支。
9.git branch -d V2
删除名称为"V2"的分支
10. git checkout V2
切换到V2分支
11. git merge V2
合并分支V2 到当前分支
12. git checkout -- fileName
丢弃****⼯作区****的修改, git checkout -- 4.txt
13. git reset HEAD 4.txt
删除已经提交到缓存区的修改,之后返回到⼯作区
14.git rm 1.txt
删除指定文件
15 打tag
参看标签:git tag
新增 tag:git tag -a 20220427 -m "促销1.0"
删除标签:git tag -d 20220427
查看具体信息: git show 20220427
16 通过tag 创建分支
git branch <分支名称> <tag名>
git branch 20220427-fix1 20220427
三、关联远程Git仓库
1. 生成ssh公钥
https://git-scm.com/book/zh/v2/
2.git remote add origin <仓库地址>
git remote add origin https://gitee.com/beiyou123/project01.git
关联远程仓库
3. git push -u origin master:master
将本地分支master推送到远程master分支
4.git pull origin master
拉取远程分支master到本地
5.git branch -r/a
查看远程分支/所有分支
6. git clone git@github.com:pkgcenter/java02.git
克隆远程项目