一. 版本控制
1.本地版本控制
集中化版本控制(svn)--解决多人协同开发
单点故障,服务器宕机问题,导致客户端无法提交代码。如果服务器磁盘发生故障,备份不够及时,就会有丢失数据的风险
服务端可以有不同版本
2.分布式版本控制 (git)
服务端可以有不同版本,客户端本地仓库都可以有不同版本,避免单点故障,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复,因为每一次的提取操作,实际上都是一次对代码仓库的完整备份
二. 安装与配置
安装
Debian/Ubuntu Git 安装命令为:
| apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \libz-dev libssl-dev |
| apt-get install git |
| git --version |
| #git version 1.8.1.2 |
如果你使用的系统是 Centos/RedHat 安装命令为:
| yum install curl-devel expat-devel gettext-devel \openssl-devel zlib-devel |
| yum -y install git-core |
| git --version |
| ##git version 1.7.1 |
| yum install curl-devel expat-devel gettext-devel \openssl-devel zlib-devel |
| yum -y install git-core |
| git --version |
| #git version 1.7.1 |
源码安装
我们也可以在官网下载源码包来安装,最新源码包下载地址:https://git-scm.com/download
安装指定系统的依赖包:
| ########## Centos/RedHat ########## |
| yum install curl-devel expat-devel gettext-devel \openssl-devel zlib-devel |
| ########## Debian/Ubuntu ########## |
| apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \libz-dev libssl-dev |
解压安装下载的源码包:
| $ tar -zxf git-1.7.2.2.tar.gz |
| $ cd git-1.7.2.2 |
| $ make prefix=/usr/local all |
| $ sudo make prefix=/usr/local install |
配置
| git version #查看安装版本 |
| git config --global user.name "your_username" #设置对应用户名和邮箱 |
| git config --global user.email your_email@domain.com git config --list #查看所有配置 |
Windows 平台上安装
安装包下载地址:https://gitforwindows.org/
官网慢,可以用国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/。
三. git 文件的三种状态
已提交(committed):表示已经安全保存在本地版本数据库中
已修改(modified):表示修改了文件,这时保存在磁盘中,还没保存到本地版本数据库中
已暂存(staged): 表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
四. 三个工作区域:
工作区:自己创建的本地项目目录
暂存区:add 缓存区
git仓库:commit (隐藏文件.git)
五.创建版本库并提交
| git init #初始化本地仓库 |
| git status #查看文件当前git状态 |
| git add 文件名 #将文件加入暂存区 |
| git add . |
| git commit 文件名 -m “注释说明” # 将文件提交到仓库 |
| git push #提交到仓库 |
| git remote add origin https://gitee.com/luo_lucky/code.git git push -u origin master |
| #推送仓库 |
| git push -u 文件名 "master" |
| git ls-files 查看git仓库里面的文件 git log 文件修改日志 |
| |
六 . 版本切换
| git diff HEAD -- 文件名 #文件差异比较 |
| |
| git log -- pretty=oneline #简化提交日志输出(提交日志hash值 HEAD 指针指向说明) |
| git reset --hard HEAD^(几个^ 就表示回退到上几个版本) #回退文件到指定版本 |
| git reset --hard~100 #回退到100个版本前 |
| git log -- pretty=oneline #回退到最初的版本 |
| git reset --hard git 提交标识号(版本的hash值 5-8个字符) #回到之前/未来的版本 |
| |
遇到问题:如果回退到之前的某一个版本直接关闭了git命令窗口,怎么样才能回到未来最新的版本喃?
解决方法:
| git reflog #用来记录原来操作的命令 可查看最新版本的标识id |
七. 文件删除
| git checkout -- 文件名 #文件本地误删,从版本库检出 |
| git rm 文件名 #删除版本库里的文件 |
| git clone https://github.com/tianqixin/runoob-git-test (克隆) #下载远程仓库库代码文件到本地(从现有 Git 仓库中拷贝项目) |
八. 本地仓库文件推送到github
本地生成ssh公钥和私钥
| ssh-keygen -t rsa -C "自己的git邮箱" |
2,生成成功后找到.ssh 文件里面生成的公钥和私钥
3,将公钥上传到github
4,校验ssh环境
5,执行ssh推送,首先绑定远程地址到本地执行命令
| git remote add origin git@github.com:zsyeg/git01.git |
6.本地创建分支
7.执行远程推送操作,将本地库推送到远程master主分支
| git push -u origin master |
九. git 本地分支操作
| git checkout -b leaf01 #创建并切换分支 |
| git branch #查看所有分支 |
| git checkout main # 切换到main分支 |
| git merge leaf01 #在主分支上合并leaf01 |
| git branch -m leaf01 leaf01-01 #重命名分支 |
| git branch -d leafo1-01 # 在主干上生成分支 |
十. 远程分支操作
| git branch -a #查看本地和远程分支 |
| git push origin leaf01 #把本地仓库推送到远程仓库 |
| git chechout -b leaf01 origin/leaf01 #拉取远程分支并在本地创建分支 |
| git push origin :leaf01 #删除远程分支 |
本地分支的文件冲突
不同分支合并文件冲突(视情况而定)
1,在文件中解决冲突的地方
2,在主分支上提交文件 git add , git commit
对人协同操作冲突--在同一分支上操作文件修改
| git push #将本地客户端文件推送到远程仓库 |
| git pull #拉取远程代码(此时会出现冲突场景) |
1.找到冲突文件,解决文件冲突错误(视情况而定)
2,提交文件 git add , git commit
十一. 标签基本操作管理
| git tag v-0.1 #创建标签 |
| git push origin v-0.1 # 推送本地标签到远程(此时远程仓库有个v-0.1标签压缩包) |
| git tag -a v_0.2 -m "描述" # 添加带描述的标签 |
| git push tag -a v_0.2 -m "描述" # 推送 ( 此时远程仓库有个带描述的 v-0.2标签压缩包) |
| git push origin --tags #推送全部未推送到远程的标签 |
| git tag -d v_0.3 #删除本地标签 |
| git tag #查看所有标签 |
| git push origin :refs/tags/v_o3 #删除远程标签 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!