首页 > 其他 > 详细

集腋成裘-21-git使用-03进阶篇

时间:2020-07-05 16:07:14      阅读:44      评论:0      收藏:0      [点我收藏+]

前言

集腋成裘-12-git使用-01创建库和 集腋成裘-13-git使用-02进阶篇 从使用层面进行了简单的介绍,下面从命令形式进行介绍

一、快速入门

1.1  Git与GitHub

  Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/

  GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

  Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:

  • 无GitHub:在本地 .git 文件夹内维护历时文件
  • 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库

其他:

    集中式:远程服务器保存所有版本,用户客户端有某个版本
    分布式:远程服务器保存所有版本,用户客户端有所有版本

 一言以蔽之:GitHub是文件远端存放的平台,Git是文件版本控制的工具

1.2  Hello Git

  安装过程不再赘述,这里开始第一行代码,即检查Git是否安装成功

技术分享图片
$ git --version
查看版本号

技术分享图片

1.3 基本概念

我们先来理解下Git 工作区、暂存区和版本库概念

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。技术分享图片

二、Git使用之小P创业史

假设小P准备创建一个《网上书城》的项目,

2.1  初创期:单枪匹马自己干

  2.1.1 通过git控制代码

   把文件纳入到版本控制大致分三步:

  • 进入文件夹进行初始化
  • 添加要管理的文件
  • 生成版本
  1. 进入待管理文件夹
    cd /文件路径
  2. 初始化
    git init
  3. 查看管理目录下的文件状态
    git status
  4. 管理指定文件(红变绿)
    git add 文件名
    git add . 
  5. 生成版本

    git commit -m ‘版本备注信息‘
  6. 文件配置(如果是首次commit命令,需要通过以下命令配置跟人信息)

    git config --global user.email "1692134188@qq.com"
    git config --global user.name "Yango"
  7. 查看日志
    git log
    git log --graph --pretty=format:"%h %s"

 技术分享图片

2.1.2  完善、拓展新功能

  对历史功能的完善,如:完善了index.html首页功能

  拓展新功能,添加了readme系统说明

  此时两个文件都会变红,需要重新添加(git add .),并提交(git commit -m ‘备注‘)

git add .
git commit -m ‘备注‘

2.1.3 添加打折功能,到期后回滚

  世界读书日,需要添加一个打5折优惠功能,假设需要修改到index页面和新增一个discount.py文件。

  过了这天后,价格恢复原价,代码回滚   

  回滚流程:一、找到想要回滚的版本号。二、回滚
技术分享图片
git add .
git commit -m v4版本,世界读书日,全场五折
世界读书日,全场五折
git log查看日志,找到想要回滚的版本号
git log
git reset --hard 要回滚的版本号

技术分享图片

2.1.4 商城&紧急bug修复

  正常开发一个功能(商城功能)是在dev分支上进行的,线上突然有一个紧急bug需要修复,

  技术分享图片

 

 

  1. 查看分支
    git branch
  2. 创建分支
    git branch dev
  3. 切换分支
    git checkout dev
    

      技术分享图片

  4. 同样道理从master分支上切出一个bug分支,并在bug分支上修改相应的bug,并进行 commit提交
  5. 合并分支(可能会有冲突)
    1:切换到mater分支并检查
    git checkout master
    git branch
    2:把bug分支merge到主干上
    git merge bug_01 
  6. 删除分支
    1.  
      git branch -d 分支名
       
    2. 技术分享图片 
  7. 继续在dev上分支开发,开发完成后提交
    1.   技术分享图片
  8. 产生处理(此时再回到master分支 进行合并dev分支,由于共同修改了index.html文件,所以会发生冲突)技术分享图片
  9. 手动处理后并再次commit提交

  技术分享图片

2.2  GitHub

  2.2.1 准备工作

  • 申请账号
  • 创建云端仓库

技术分享图片

技术分享图片

  2.2.2 把代码推送到GitHub

  • 1:给远程仓库起别名
    git remote add origin https://github.com/1692134188/bookstore.git
    2:向远程推送代码 git push -u origin master

    技术分享图片

  2.2.3 初次在公司新电脑下载代码

1:克隆远程仓库代码(内部已实现git remote add origin 远程仓库地址)
git clone 远程仓库地址
2:切换分支
git checkout 分支

  2.2.4 在公司的dev上面开发代码,推送到远程

1:切换到dev分支
git checkout dev
2:把master分支合并到dev
git merge master
3:修改代码
4:提交代码
git add .
git commit -m ‘‘
5:推送到远程
git push origin dev

  2.2.5 回到家,获取远程代码,继续写

1:切换到dev分支
git checkout dev
2:从远端拉取代码
git pull origin dev
3:继续开发

4:提交代码
git add .
git commit -m ‘‘
5:推送到远程
git push origin dev

  。。。。。周而复始,直到有一天,出了差错,

 2.2.6 在公司写完代码没有及时提交到远程

1:切换到dev分支
git checkout dev
2:从远端拉取代码
git pull origin dev
3:继续开发

4:提交代码
git add .
git commit -m ‘‘
5:推送到远程
在公司继续写代码,但是忘记推送了!!!!!!!!!

 2.2.7 回到家,发现公司写的代码没有提交,但是也只能再开发别的功能了

1:切换到dev分支
git checkout dev
2:从远端拉取代码  啊没有拉取到内容,倒霉忘记提交了
git pull origin dev  
3:继续开发

4:提交代码
git add .
git commit -m ‘‘
5:推送到远程
git push origin dev

2.2.8 回到公司, 拉取代码,合并代码,如有冲突解决冲突

2.2.9  其他

git pull origin dev = git fetch origin dev + git merge origin dev

技术分享图片

 

2.3  rebase 变基

  使提交记录更简洁,不分叉

2.3.1 场景一:多次commit记录整合

  举个例子,现在在一个新的future分支创建一个商城在线聊天室功能。假设第一天开发了前端,第二天开发了后台端40%,三天开发后端70%,第四天开发后台90%,第五条开发后端100%。

技术分享图片
应用场景一:合并多次提交记录,更简洁
1:切换到master分支,
$ git checkout master
2:把dev分支合并到master
$ git merge dev
3:从master上切一个新的future分支,用于开发聊天室ChatRoom
git branch ChatRoom
4:回到ChatRoom开始开发
git checkout ChatRoom
5:开发第一天
$ git add .
$ git commit -m ChatRoom V1:前端开发完成
6:开发第二天
$ git add .
$ git commit -m ChatRoom V2:后端完成40%
7:开发第三天
$ git add .
$ git commit -m ChatRoom V3:后端完成70%
8:开发第四天
$ git add .
$ git commit -m ChatRoom V4:后端完成90%
9:开发第五天
$ git add .
$ git commit -m ChatRoom V5:后端完成100%
聊天室提交记录

技术分享图片

 

 我们需要把V2和V5版本统一整合成一次提交记录:后端开发完成 ,按照截图标识修改一些文件内容

10:开始变基(方式一)
git rebase -i 版本号:表示要合并的起始位置
$ git rebase -i  08131d08ac095679d7bad5517cdc406e2da254a4
11:开始变基(方式二)
git rebase -i HEAD~n n:表示把最近的n次进行合并
git rebase -i HEAD~4

技术分享图片

 

 

技术分享图片

再次查看日志记录

技术分享图片

2.3.2 场景二:合并多个分支

从master上切出三个分支featureA和featureB和featureC,分别由三个开发人员开发;
A分支率先开发完成,并提交到master,
此时B分支再想同步master分支,git merge master。此时查看日志
如果C分支想同步master分支,git rebase master。此时查看日志

技术分享图片
1:从master切出3个分支
$ git branch featureA
$ git branch featureB
$ git branch featureC
2:回到A分支上开发,开发完成并提交。推送到远程
$ git checkout featureA
$ git add .
$ git commit -m A分支,版本A-1,A功能开发完成
$ git push origin featureA

3:合并A分支到master上
$ git checkout master
$ git merge featureA

4:分支B正常开发:提交,推送到远程
$ git checkout featureB
$ git add .
$ git commit -m 分支 B,版本B-1,开发50%
$ git add .
$ git commit -m 分支 B,版本B-2,开发80%
$ git push origin featureB


5:分支C正常开发:提交,推送到远程
$ git checkout featureC
$ git add .
$ git commit -m 分支 C,版本C-1,开发60%
$ git push origin featureC
$ git add .
$ git commit -m 分支 C,版本C-2,开发70%
$ git push origin featureC
准备工作

此时是B分支没有从master上merge的log日志

技术分享图片

6:分支B采取直接从master上merge
$ git checkout featureB
$ git log
$ git merge master
$ git log

 技术分享图片

此时是B分支没有从master上rebase的log日志

 

 技术分享图片

7:分支C采取从master上rebase
$ git checkout featureC
$ git log
$ git rebase master
$ git log

技术分享图片

2.4  多人开发

  2.4.1 创建组织

   技术分享图片

  2.4.2 基于组织创建项目

技术分享图片

  2.4.3 邀请成员进组织 

技术分享图片

技术分享图片

  2.4.4 给成员分配权限

技术分享图片

  2.4.5 管理员代码上传 

   git init

   git add .

  git commit -m "first commit"

  git remote add origin https://github.com/YangoCity/BookStore.git

  git push -u origin master

 技术分享图片

  2.4.6   开发获取代码

技术分享图片

 

集腋成裘-21-git使用-03进阶篇

原文:https://www.cnblogs.com/YK2012/p/13198581.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!