大家好呀~许久不见~
今天给大家分享的是Git的魔法指南,无论是在公司的程序开发中,还是用于开源项目,都是一个经常需要用到的工具。在工作中也经常使用到GitHub,也可以使用gitlab或SVN等,他们可以帮助我们在项目中管理项目的版本迭代以及每一次修改的内容。
本文主要内容:
- Git介绍及使用
- Git应用场景介绍
- 知识点补充
首先,Git是一个分布式,能够实现本地版本控制的软件。另外一个集中化版本控制的软件叫SVN。那么什么是版本控制呢?简单来说就是可以跟踪和管理软件代码变更,以便于查看和备份,也便于版本迭代。举例最简单的是便是我们生活中各种软件都需要更新,如果有某个版本挂掉了怎么办呢,那么就可以通过版本控制来快速回滚到之前的版本。
早期准备便是下载Git:Git下载使用
1.1 第一阶段
首先,如果想要让Git对一个项目文件进行版本控制需要如下步骤:
->进入要管理的文件夹,右键打开Open Git Bash here(win11可以点击查看更多选项)
->执行初始化命令(如下):
代码语言:javascript复制git init
->管理目录下的文件状态:
代码语言:javascript复制git status #新增的文件和修改后的文件都是红色
->管理指定文件(红变绿)
代码语言:javascript复制git add 文件名
git add .
->在使用Git管理文件时,我们个人信息配置(如下):
代码语言:javascript复制git config --global user.email "邮箱"
git config --global user.name "用户名"
->生成版本(如下)
代码语言:javascript复制git commit -m '描述信息'
->查看版本记录:
代码语言:javascript复制git log
1.2 Git三大区域
Git在使用时主要分为三大区域,分别是工作区、暂存区、版本库,详情如下:
工作区(Working Directory):在电脑中看到的文件和目录,简单来说就是平时存放项目代码的地方(如下,HEAD指向最新提交的版本)。
已管->新文件/修改文件(红色){白<-红git checkout} <-git reset HEAD
暂存区(Staging Area):它会保存你临时的改动,并保存在 .git 目录下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
add . ->暂存区((Staging Area)绿色): <-git reset soft版本号
版本库(Repository):存放数据的地方,这里面有你提交到所有版本的数据。
commit->版本库(Repository)
1.3回滚(举例如下:)
1. v2->v1 :
代码语言:javascript复制git reset --hard 版本号(git log)
2. v1->v2:
代码语言:javascript复制查看之前的log :git reflog
git reset --hard 版本号(git log)
1.4分支的相关操作
查看当前分支:git branch
创建dev分支:git branch dev
切换分支:git checkout 分支
到dev分支上开发:git checkout dev
分支合并:git merge(切换分支再合并)
删除分支:git branch-d 分支
我们在开发中,若dev分支出现bug,回到master分支命令:git checkout master,里面的代码便是master里面的代码,且不包含dev分支。
若继续查看dev分支里面的代码命令:git checkout dev
出现bug后,若创建一个bug分支:git branch bug
把bug分支合并到master分支,先切换回master分支,再合并:git merge bug
若想删除bug分支:git branch -d bug
To:dev开发完成后合并master分支时,需要先回master分支,再合并dev。否则会发生冲突,需要自己手动去改,再add、commit,比较麻烦。Git操作最好按照步骤来,如果不熟悉Git的解决起来会很麻烦。
1.5工作流(举例说明)
代码语言:javascript复制->master[C1]<-[C2]
->dev(开发)[C2]<-[C3]
在dev分支上开发:在开发dev时,如果master分支有更新,需要先把master上的代码合并到dev分支上。在dev分支上执行git merge master(仅一次)
再把dev分支上的代码推送到远程dev分支上:git push origin dev
然后回家继续开发更新:git pull origin dev,开发完继续add,commit,push
To:当我们的dev开发完后,就需要回到master分支,再把dev分支合并,然后推送master分支上线:git push origin master,再回到dev,把master分支合并到dev分支,再把dev也推送上去:git push origin dev
git pull origin dev等同于:
代码语言:javascript复制git fetch origin dev
git merge origin/dev
二、Git应用场景介绍
1.rebase(变基)应用场景:可以让提交记录变得简洁
当我们有多个记录时,如何使其在提交记录时变成一个记录呢?比如在git log 里面会有很多提交日志,如何整合成一个?
代码语言:javascript复制git rebase -i HEAD~3
To:以上表示最近的三条记录合并。
注意:合并记录时,建议不要合并那些已经push到仓库的。
2. 分支整合
master:c1<-c2-<c4-<c5
dev:c2<-c3-<c5
如上,我们想把dev分支的记录整合到master一条线,就需要把dev分支提交一次,写一个master分支提交到v4。首先切回到dev分支,再使用命令:git rebase master,再切回到master分支:git master checkout,最后合并git merge dev
4. 注意事项
rebase相当于合并,在执行git rebase的时候,可能会产生冲突:解决方式Git会告诉你执行git add...然后再执行git rebase --continue
也可以使用byeond compare软件(快速解决冲突的软件),使用方法:
第一步便是安装,然后在git中配置:
代码语言:javascript复制git config --local merge.tool bc3
git config --local mergetool.path '/user/local/bin/bcomp'
git config --local mergetool.keepBackup false
解决冲突git mergetool
添加远程连接git remote add origin 地址
推送代码git push origin dev
拉取代码git pull origin dev
记录图形展示git log --graph --pretty=format:"%h %s"
补充:当我们有多个人开发同一个项目时,从dev拆出的分支需要我们每天在自己的分支上提交,开发完后,再申请合并到dev,其中需要自己做代码检查。
大公司有的并不会直接提交到master,而是在master和dev之间设置一个release,然后提交到release,进行测试。当我们需要的功能做完后可删除该分支。
三、知识点补充
1. 配置文件(在Git中通常有三个配置文件需要我们注意,如下:)
(1)全局配置文件:~/。gitconfig
代码语言:javascript复制git config --global user.name 'bob'
git config --global user.email 'bob@xx.com'
(2)项目配置文件:项目/.git/config
代码语言:javascript复制git config --local user.name 'bob'
git config --local user.email 'bob@xx.com'
(3)系统配置文件:/etc/.gitconfig(To:要root权限)
代码语言:javascript复制git config --system user.name 'bob'
git config --system user.email 'bob@xx.com'
2.免密登录
在使用Git中,我们会经常需要输入密码,有时候会显得比较麻烦,在Git中免密码登录有两种方式,一种是在URL中体现,还有一种是在SSH中体现。如下:
在URL中体现举例:
原来的地址:https://gitee.com/bob09/docs.git
修改的地址:https://用户名:密码gitee.com/bob09/docs.git
代码语言:javascript复制git remote add origin https://用户名:密码gitee.com/bob09/docs.git
git push origin master
SSH实现:
1. 生成公钥和私钥(默认存在~/ .ssh目录下,id_rsa.pub公钥、id_rsa私钥)
代码语言:javascript复制ssh-keygen
2. 拷贝公钥的内容,并设置到GitHub中
3.在git本地中配置ssh地址:
代码语言:javascript复制git remote add origin git@gitee.com:bob09/docs.git
4. 以后使用下面命令即可:
代码语言:javascript复制git push origin master
emmm,关于Git的介绍就先到这啦~