git

一、版本控制工具

1、集中版本控制工具-svn/cvs

版本库存放在中央服务器,工作时从中央服务器下载/更新代码,修改后再提交到中央服务器
在这里插入图片描述

2、分布式版本控制工具-git

git 不需要中央服务器,每个人的电脑上都有一个完整的版本库,类似 github 这样的“中央服务器”存在是为了方便交换大家的修改,没有的话也可以,就是不方便交换修改
在这里插入图片描述

二、git

1、工作流程

在这里插入图片描述

2、基本配置

1、设置用户信息
git config --global user.name “xxx”
git config --global user.email “xxx@xxx.xxx”

2、查看配置信息
git config --global user.name
git config --global user.email

3、创建本地仓库

1)创建工作目录
2)进入工作目录
3)git init:创建成功后会生成 .git 隐藏目录

4、基础操作命令

工作目录(抛开 .git)下对于文件的修改(增加、删除、更新)会存在几种状态,这些修改状态会随着我们执行 git 命令而发生变化
在这里插入图片描述

  • git add .|filename:工作区 -> 暂存区
  • git commit -m “注释”:暂存区 -> 本地仓库
  • git status:查看修改状态(暂存区、工作区)
  • git log:查看提交日志,git log --pretty=oneline --abbrev-commit --all --graph
    • all:显示所有分支
    • pretty=oneline:将提交信息显示为一行
    • abbrev-commit:使得输出的 commitID 更简短
    • graph:以图的形式显示
  • git reset --hard commitID:版本回退
    • git reflog:可以查看 git log 没有的提交记录
  • 添加文件至忽略列表(.gitignore)
    一般我们总会有些文件无需纳入 git 管理,也不希望它们总出现在未跟踪的文件列表
cat .gitignore
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir /TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

5、分支

你可以使用分支把你的工作从开发主线上分离开,然后再修改 bug、开发新功能,以免影响开发主线

  • git branch:查看本地分支
  • git branch +分支名:创建本地分支
  • git checkout +分支名:切换分支
  • git checkout -b +分支名:创建并切换分支
  • git merge +分支名:合并分支,指定分支上的提交可以合并到当前分支上
  • git branch -d +分支名:删除指定分支,不能删除当前分支,删除时需要做各种检查
  • git branch -D +分支名:删除指定分支,不能删除当前分支,删除时不做任何检查,强制删除

解决冲突
两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,步骤如下:

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区
  3. 提交到本地仓库

开发中分支使用原则与流程

  • master(生产分支)
    线上分支,主分支,中小规模项目线上运行应用对应的分支
  • develop(开发分支)
    从 master 创建的分支,一般是开发部门的主要开发分支,如果没有同期并行开发但不同期上线要求,都可以在此分支上进行开发,阶段开发完成后,再合并到 master 准备上线
  • feature/xxx 分支
    从 develop 创建的分支,一般是同期并行开发,但不同期上线时创建的分支,开发任务完成后,合并到 develop
  • hotfix/xxx 分支
    从 master 创建的分支,一般是修复线上 bug,修复完成后合并到 master、test(用于代码测试)、develop
  • 还有一些其他分支,例如 pre(预上线分支)等
    在这里插入图片描述

三、远程仓库

1、常用托管服务

  • github
  • 码云
  • gitlab:需要自行搭建 git 私服

2、创建远程仓库

3、添加远程仓库

  • git remote add <远端名称> <仓库路径>
    git remote add origin ssh_info:添加远程仓库
  • git remote:查看远程仓库

4、推送到远程仓库

  • git push [-f] [ --set-upstream] [远端名称 [本地分支名][:远端分支名]]
    • 如果远端分支名和本地分支名相同,则可以只写本地分支名
      git push origin master:因为此时远端还没有任何分支,也就无需写远端分支名
    • f:强制覆盖
    • set-upstream:推送到远端的同时,建立起和远端分支的关联关系
      git push --set-upstream origin master:因为此时远端还没有任何分支,也就无需写远端分支名
      git branch -vv:查看关联关系
      当前分支和远端分支关联后,直接 git push 即可

5、从远程仓库克隆

  • git clone <仓库路径> [本地目录]

6、从远程仓库抓取和拉取

  • git fetch/pull [远端名称] [远端分支名]
    • fetch:将远程仓库的修改抓到本地,但不进行合并
      如果不指定远端名称和远端分支名,就抓取所有分支
    • pull:将远程仓库的修改拉到本地并自动进行合并,等同于 fetch+merge
      如果不指定远端名称和远端分支名,就抓取所有并更新当前分支

7、git pull 冲突

A 用户在本地修改代码后优先推送到远程仓库,此时 B 用户在本地修改好代码并提交到本地仓库后,也需要推送到远程仓库,由于 B 用户晚于 A 用户推送,所以需要先拉取远程仓库的提交,经过本地合并后才能推送到远端分支,在 B 用户拉取代码时,有可能因为 A、B 用户修改了同一文件的相同位置代码,最终导致 git pull 冲突(实际上是 git merge 冲突)
在这里插入图片描述
完整的推送流程见下:

  1. 代码写好后,先 git pull
  2. 处理文件中冲突的地方
  3. 将解决完冲突的文件加入暂存区
  4. 提交到本地仓库
  5. git push
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值