Git学习
1.Git简介
什么是git
git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
git的工作流图:
image.png命令如下:
- clone(克隆): 从远程仓库中克隆代码到本地仓库
- checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
- add(添加): 在提交前先将代码提交到暂存区
- commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
- fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
- pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
fetch+merge - push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
2.Git的配置
设置用户配置
git config --global user.name “名字”
git config --global user.email “邮箱”
查看配置信息
git config --global user.name
git config --global user.email
设置常用配置指令的别名(可选)
打开gitBash,输入touch ~/.bashrc
在 .bashrc 文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
执行 source ~/.bashrc
解决GitBash乱码问题
- 打开GitBash执行下面命令
git config --global core.quotepath false
- ${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
3.基础操作指令:
1.获取本地仓库:
新建一个目录 在该目录下打卡git bash 然后执行git init
2.本地仓库的状态:
git add
(工作区->暂存区)git commit
(暂存区->仓库)查看的修改的状态(暂存区、工作区):
git status
添加工作区到暂存区(add):
命令形式:
git add 单个文件名|通配符
将所有修改加入暂存区:
git add .
提交暂存区到本地仓库(commit):
作用:提交暂存区内容到本地仓库的当前分支
命令形式:
git commit -m '注释内容'
查看提交日志(log)
命令形式:
git log [option]
options:
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图的形式显示
设置别名后直接使用
git-log
即可版本切换:
git reset commitID --hard
git reflog
这个指令可以看到已经删除的提交记录添加文件至忽略列表:
在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。
4.分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
git branch
查看本地分支
git branch 分支名
添加新的分支
git checkout 分支名
切换分支
git checkout -b 分支名
切换同时创建一个分支
git merge 分支名
分支合并
git branch -d 分支名
做检查的删除分支
git branch -D 分支名
强制的删除分支
解决冲突:
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
决冲突,解决冲突步骤如下:
- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
在开发中,一般有如下分支使用原则与流程:
- master (生产) 分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支; - develop(开发)分支
是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线
要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。 - feature/xxxx分支
从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完
成后合并到develop分支。 - hotfix/xxxx分支,
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 - develop分支。
还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等
等。
5.Git仓库
常用的托管服务[远程仓库]:
github、马云、gitlab
Gitee操作流程:
1.登录gitee
2.新建仓库
3.选择ssh 即可得到远程仓库的地址
4.配置SSH公钥:
-
ssh-keygen -t rsa
不断回车 -
cat ~/.ssh/id_rsa.pub
获取公钥
在gitee的安全设置中加入获取的公钥
验证是否配置成功ssh -T git@gitee.com
5.操作远程仓库
此操作是先初始化本地库,然后与已创建的远程库进行对接。
命令:git remote add <远端名称> <仓库路径>
远端名称,默认是origin,取决于远端服务器设置
仓库路径,从远端服务器获取此URL
eg: git remote add origin git@gitee.com:bythere/git_test.git
- 查看远程仓库:
git remote
- 推送到远程仓库
命令:git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]
如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master
-f 表示强制覆盖
--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
git push --set-upstream origin master
如果当前分支已经和远端分支关联,则可以省略分支名和远端名。
git push
//三步即可直接使用git push
git push origin master
git push --set-upstream origin master
git push
-
查看关联关系我们可以使用
git branch -vv
-
从远程仓库克隆
如果已经有一个远端仓库,我们可以直接clone到本地。
命令:git clone <仓库路径> [本地目录]
本地目录可以省略,会自动生成一个目录 -
抓取
命令:git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地仓库,不会进行合并 -
拉取
命令:git pull [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地仓库并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支。