GIT 分布式管理控制工具
学习笔记仅供参考
作者--Alianer
文章目录
前言
原理操作图片皆是来源于黑马程序员的教程资料
基本上是看黑马视频自己摘抄的笔记,会不定时回来过一遍知识,根据自己的理解不断改进笔记
Git基本概念
常见场景
- 备份
- 代码回滚
- 协同开发
- 代码追溯,查看日志寻找问题
优点
- 速度快
- 简单的设计
- 对非对称开发模式的强力支持
- 完全分布式
- 有能力管理类似Linux内核一样的超大规模项目
版本控制器
-
集中式版本控制工具,就是版本库存放在中央服务器的,项目团队每个成员在工作时从中央服务器下载代码,是必须链接局域网或者互联网才能工作,个人修改版本后需要提交到中央版本库(SVN,CVS)
-
分布式版本控制工具,分布式版本控制没有中央服务器,每个人的电脑上都是一个完整的版本库,工作时就不需要联网,多人协同时只需要把各自的修改推送到对方即可。(Git)
Git基本工作流程
详细流程:
- clone(克隆):从远端仓库克隆代码到本地
- checkout(检出):从本地仓库中检出一个仓库分支然后修订
- add(添加):在提交前先把代码添加到暂存区
- commit(提交):提交到本地仓库,本地仓库中保留了各个历史版本
- fetch(抓取):从远端仓库抓取到本地,不进行任何操作。
- pull(拉取):从远端仓库拉去到本地并且自动合并,相当于fetch+merge
- push(推送):修改完成后,把本地代码推送至远程仓库
Git基本操作及常用命令
官网安装
https://git-scm.com/
基本配置
-
打开git bash
-
设置用户信息(信息邮箱无所谓是否存在,可以随便写)
git config --global user.name '‘姓名’
git config --global user.email “邮箱”
-
查看配置信息
git config --global user.name
git config --global user.email
解决git bash乱码问题
-
打开git bash执行以下命令
git config --global core.quotepath false
-
${git_home}/etc/bash.bashrt 下加入下面两行代码
export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8"
获取本地仓库
- 在需要的位置创建项目文件夹(空目录)作为本地的git仓库
- 进入目录,右键打开git bash
- 执行命令
git init
- 如果创建成功则会在文件夹下看见隐藏的.git目录
仓库原理和基本指令
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。
常用指令 | 指令作用 |
---|---|
git add 单个文件|通配符 git add . 表示更新全部文件 | 更新文件到暂存区 |
git commit -m '注释内容' | 把暂存区的文件提交到仓库中 |
git status | 查看修改的状态 |
git log[option] option: --all 查看全部分支 –pretty=oneline 查看提交信息为一行 –abbrev-commit 使得输出的commitld更加简短 –graph 以图片的形式显示 | 查看提交日志 |
git reset --hard commitID commitID 可以通过git-log查看 | 版本回退 |
git relog | 查看已经删除的提交记录 |
可以在Windows用户目录下创建.bashrc下使用alias添加命令的别名
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
如果Windows不支持创建点开头的文件,则在Windows用户目录下打开git bash执行 touch ~/.bashrc创建该文件
添加文件到忽略列表
我们可以在项目目录下,创建一个名字为.gitignore的文件,里面列出忽略文件的格式即可让该类文件不被git管理
*.a //表示所有点a文件不被git管理
分支
几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
常用指令 | 指令作用 |
---|---|
git branch | 查看本地分支 |
git branch 分支名字 | 创建本地分支 |
git checkout 分支名 | 切换已经存在的分支 |
git checkout -b 分支名 | 创建并且切换分支 |
git merge 分支名 | 一个分支上的提交合并到另一个分支 |
git branch -d/-D | 删除分支-d是删除时检查,-D是强制删除 |
解决冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一,这时就需要手动解决冲突,解决冲突步骤如下:
- 根据需要去处理修改冲突的地方
- 解决完成的冲突更新至暂存区
- 提交到仓库
开发中的分支规范
- master(生产)分支:线上分支,主分支
- develop (开发)分支:从master创建的分支用于并行开发项目功能,阶段开发完成后,即可合并到master分支下,准备上线
- feature/xxx分支:从develop创建的分支,一般用于不同时期的并行开发,开发完成后合并到develop分支
- hotfix/xxx分支:从master分支派生的分支,主要用于修复线上的bug,修复完成后需要合并到master,test,develop等分支
- test分支:用于代码测试
- pre分支:预上线分支
Git代码托管服务
常用的远程仓库
注册码云账号
手机号或者邮箱官方网站注册即可
配置SSH公钥
- 打开git bash 输入
ssh-keygrn-t rsa
获取公钥 - 接下来步骤一直回车即可(如果之前设置过则会覆盖)
cat ~/.ssh/id_rsa.pub
查看公钥,然后复制下来- 打开码云设置公钥,粘贴刚刚的公钥,命名即可
- 检测是否配置成功,
ssh -T git@gitee.com
(如果是第一次配置需要回车后打一个yes)
操作远程仓库
常用命令 | 命令作用 |
---|---|
git remote add [远端名称][仓库的路径(ssh)] | 初始化远程仓库,一般命名为origin |
git remote | 查看远程仓库 |
git push [-f][--set-upstream] [远端名称[本地分支名称]:[远端分支名称]] -f强制覆盖 –set-upstream,推送到远端的同时建立和远端分支的关联关系 | 推送到远程仓库 |
git clone [仓库路径][本地目录] | 克隆远端仓库,本地目录可以不写,会自动生成一个目录 |
git fetch [远端名称][本地名称] | 抓取,更新的分支但不会合并 |
git pull [远端名称][本地名称] | 拉取,更新的分支并且合并 |
git branch -vv | 查看分支关系 |
解决合并冲突
在一段时间,甲,乙两人修改了同一个文件的同一位置的代码,此时会发生合并冲突。
解决办法:和解决分支冲突一样,在甲先push推送之后,乙先pull一下项目,然后合并一下,解决修改同一地方的分支冲突后,在合并,最后乙再push提交到远程仓库
使用idea操作Git
idea配置git
在idea中,如果是默认路径下的git,则会自动匹配位置,如果是手动修改安装的git,则需要配置git路径在file->setting打开窗口设置找到version control下的git选项(我自己的是汉化后的了,可以对着看看位置)
从idea中创建仓库
找到一个项目打开,选择vcs->导入版本控制->创建git存储库
选择对应项目文件,确定,创建成功之后会有git一些功能选项如下
提交版本及推送分支
点击绿色的勾,选择要提交的文件,然后点击提交commit
之后可以在git控制台上看见提交的内容
可以在日志里面看见详细的提交内容
然后选择推送或者之后可以选择直接提交并且推送,然后吧创建的远程仓库的地址(ssh)复制到下面url中
确定即可
推送后会在git中看见修改分支
也会看见修改的具体内容差别
一般先提交版本更新,然后再pull,克隆最新的代码,然后根据需求修改分支冲突,合并之后再push推送上去
新建分支和分支管理(两个地方都可以)
可以找到设置里面的终端修改成自己的git本地的bash.exe路径
就可以再idea终端使用git bash
规范化
- 切换分支前需要先提交本地修改
- 代码及时提交,提交过就不会丢失了
- 遇到任何问题都不要删除文件目录