Git基础使用
Git简介
Git 是目前世界上最先进的分布式版本控制系统。
作用:源代码管理
为什么要进行源代码管理?
- 方便多人协同开发
- 方便版本控制
Git的诞生
- 作者是 Linux 之父:Linus Benedict Torvalds
- 当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)
git 开发时间表
- git 的产生是 Linux Torvals 在无奈被逼的情况下创造的,我看了一下时间历程:
- 2005 年 4 月3 日开始开发 git
- 2005 年 4 月 6 日项目发布
- 2005 年 4 月 7 日 Git 开始作为自身的版本控制工具
- 2005 年 4 月 18 日发生第一个多分支合并
- 2005 年 4 月 29 日 Git 的性能达到 Linux 预期
- 2005年 7 月 26 日 Linux 功成身退,将 Git 维护权交给 Git 另一个主要贡献者 Junio C Hamano,直到现在
Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQuery,PHP,Ruby 等等
Git管理源代码特点
1.Git
是分布式管理.服务器和客户端都有版本控制能力,都能进行代码的提交、合并、…
2.Git
会在根目录下创建一个.git
隐藏文件夹,作为本地代码仓库
Git操作流程图解
Git服务器 ⇄ \rightleftarrows ⇄ 本地仓库 ⇄ \rightleftarrows ⇄ Git客户端
Git单人操作
三大区
工作区:进行添加、修改、删除文件的操作
暂存区:将工作区中的操作完成小阶段的存储,是版本库的一部分
仓库区:标志着个人开发的一个小阶段的完成
- 仓库区中记录的各版本是可以查看并回退的
- 但是在暂存区的版本一旦提交就再也没有了
安装
sudo apt-get install git
创建本地仓库
#进入项目文件夹,初始化空仓库
git init
#设置个人用户名
git config user.name xxxx
#设置个人邮箱
git config user.name xxxx
- 自动创建
.git
文件夹
查看文件状态
git status
红色表示工作区,未跟踪的修改/添加文件
绿色代表暂存区,暂存的修改/新添加文件
增加到暂存区
将工作区的文件添加到暂存区,进行版本跟踪
git add filename
如:
git add b.py
修改文件并暂存
修改b.py
文件后:
工作区出现新的modified的b.py
完成修改后可通过add
命令将新的b.py
暂存到暂存区。
提交到仓库区
git commit -m '备注'
提交到仓库区后,暂存区清空:
查看提交日志
git log #查看主线的版本记录,不包括回退、删除的
git reflog #可以查看所有版本记录,包括回退、删除的
版本回退
将工作区的代码回退到仓库区的最新版本的前几个版本
git reset --hard HEAD^ #回退到上个版本
git reset --hard HEAD^^ #回退到上上个版本
#....以此类推
git reset --hard HEAD~1 #回退到上个版本
git reset --hard HEAD~2 #回退到上上个版本
#....以此类推
将工作区的代码回退到指定版本
git reset --hard xxxxxxx(reflog显示记录前的七位码,即版本号)
代码撤销
将工作区的代码撤销到仓库区中的状态,即撤销工作区相对于仓库区的所有修改
git checkout filename
将暂存区的代码恢复到工作区,即将暂存区中的代码拿出暂存区,放回工作区
也意味着将工作区的代码撤销到暂存区的状态,即撤销工作区相对于暂存区的所有修改
git reset HEAD file
GitHub远程操作
创建远程仓库及开发基础流程
- 注册github账号
- 创建仓库
- 在远程仓库中创建代码并提交
- 将远程仓库克隆到本地
git clone HTTPS网址
- 单人操作:add,commit等…
- 配置SSH秘钥
- 生成秘钥
ssh-keygen -t rsa -C "username@email"
- 复制秘钥
- 配置秘钥
- 将本地仓库推送到远程仓库
git push
从远程仓库拉取(pull)
可以将本地仓库更新到远程仓库的状态
git pull
代码冲突
在多个人一起开发的时候,两者向远程仓库推送的代码可能会产生冲突。
这个时候,冲突的后者pull推送时会收到警告。
两者需要协商,后者整合修改代码再进行pull推送
容易冲突的操作方式
- 多个人同时操作了同一个文件
- 一个人一直写不提交
- 修改之前不更新最新代码
- 提交之前不更新最新代码
- 擅自修改他人代码
减少冲突的操作方式
- 养成良好的操作习惯,先
pull
在修改,修改完立即commit
和push
- 一定要确保自己正在修改的文件是最新版本的
- 各自开发各自的模块
- 如果要修改公共文件,一定要先确认有没有人正在修改
- 结束工作前一定要提交代码,开始工作时第一件事拉取最新代码
- 一定不要擅自修改他人的代码
标签
每当完成一个大版本之后,可以对当前的远程仓库代码编写一个标签
#在本地创建标签
git tag -a 标签名 -m '标签描述'
#更新到远程仓库
git push origin 标签名
# 删除本地标签
git tag -d 标签名
# 删除远程仓库标签
git push origin --delete tag 标签名
分支
查看分支
git branch
- 默认的main主支
创建分支
可以创建一个子分支,与主分支平行,独立开发某功能,之后可以再合并。
#创建并切换到新分支
git checkout -b newbranch
推送远程
将子分支推送到远程服务器上
git push -u origin newbranch
子分支合并到主分支
git checkout main #切换回主分支
git merge newbranch #合并子分支
git push #推送到远程仓库