day 039 Git

今天学习git的基本知识。

  • git是一种分布式版本控制系统
  • 用来管理项目的整个开发流程
  • git有两大特点
    • 版本控制,可以解决多人同时开发的问题,也可以解决找回历史代码的问题
    • 分布式,git是分布式版本控制系统,同一个Git仓库,可以分不到不同的机器上。

创建一个项目

1 注册github或者码云等git平台(可选择码云)
2 点击个人界面项目栏的‘+’创建一个项目,输入项目名称等信息
3 创建一个.gitignore文件,文件里添加以下内容:
表示需要忽略的,不用上传的文件

*.pyc
.idea/
migrations/

SSH公钥

  • 需要安全链接码云上创建的项目,需要先配置SSH公钥

配置步骤

1 在终端中,先删除~/.ssh目录,这里存储了旧的秘钥
rm -r .ssh

2 运行如下命令生成新的秘钥
ssh-keygen -t rsa -c '用户名或者邮箱等代表用户名字的称呼' 如:ssh-keygen -t rsa -c 'itcast'

3 两次回车,生成成功

4 在~/.ssh目录下找到id_rsa.pub,为新生成的公钥,打开,复制
5 粘贴到码云的SSH公钥配置界面并确定,配置成功

克隆文件到本地

1 点击码云对应项目的克隆按钮,复制SSH选项卡下的项目路径

2 在主机终端里,cd到需要项目存储目录下,执行:

git clone 赋值的项目路径

3 提示输出yes/no,输入yes

4 再次输入命令,enter确认

git clone 赋值的项目路径

项目分支

  • 一个大型项目,需要多个人协作开发,每个人都会控制自己克隆的分支代码,项目会多个人同时开发,不定时上传合并各自的代码。
  • 每个开发者在开发过程中必须创建有三个项目分支
    • master 总分支,是最终上线的项目代码
    • dev 开发分支,存放总的代码
    • 项目开发人员各自的开发者分支,用来开发每个开发者负责的不同的功能模块
  • master总分支是默认创建的

git常用分支操作

1 查看当前项目分支:

git branch

2 创建dev分支:(在哪个分支下面创建分支,是把当前的分支的所有代码复制一份到新的分支)

git branch dev

3 切换到dev分支:

git checkout dev

4 切换到新创建的分支:

git checkout -b itcast1

5 上传项目分支到服务器

git push origin dev

6 将本地分支跟踪服务器分支

git branch --set-upstream-to=origin/dev

项目框架准备过程

  • 项目经理负责创建框架,开发,开发人员负责开发功能模块

项目经理:

在服务器(码云)上搭建项目框架

  1. 在服务器(码云)创建项目
  2. 把项目下载到主机上
  3. 创建dev分支和普通开发分支,如itcast1
  4. 在itcast1分支目录下创建Django框架
  5. 将创建的项目框架添加到暂存区:git add ./
  6. 将项目框架提交到仓库区:git commit -m '搭建项目框架',此时,项目被git真正管理起来
  7. 切换到dev 分支:git branch dev,发现没有任何代码,因为切换分支了,代码此时是被itcast1分支管理的
  8. 将itcast1中的代码合并到dev分支中:git merge itcast1,此时itcast1中的代码会拷贝一份在dev中
  9. 把dev代码上传到服务器中:git push origin dev,此时,一开始在itcast1分支中创建的框架代码就被上传到了服务器(码云)
  10. 为了维护自己的代码,itcast1中的代码也应该上传到服务器(码云):git push origin itcast1

开发员工

开发前准备

  1. 配置公钥,被分配权限
  2. 克隆项目到本地:git clone 码云上的项目路径,直接克隆服务器(码云)上的项目,只会克隆下master分支,此时,里面是没有代码的
  3. 将dev分支从码云上拉下来:git checkout -b dev origin/dev
  4. 创建一个自己的分支,如itcast2:git checkout -b itcast2,此时,准备完毕,可以在itcast2分支中进行模块功能开发

关于工作区,暂存区,和仓库区

  • 工作区就是IDE代码编辑区域,编辑完成后,使用 ’git add 文件/目录‘将编辑的代码上传到暂存区,暂存区负责每一个小阶段的工作确认,当一天的工作或者一个功能完成后,使用’git commit -m ‘备注信息’‘将代码上传到仓库区,生成一个新的版本,此时的代码就被git管理起来,可以使用’git push‘命令将此版本上传到服务器(码云)托管起来。
  • 一般情况下 add命令和conmmit命令同时进行

这里写图片描述

开发人员 功能开发过程

  1. 在itcast1 分支里进行功能开发,开发过程中,查看当前开发状态:git status,若有修改,会显示修改信息,为红色
  2. 添加修改信息到git中:git add '详细路径'或者’./(表示检查所有的代码,有更改的都上传)‘,此时,终端会显示修改信息,为绿色,表示修改已经存储到暂存区
  3. 如果需要提交到仓库区:git commit -m "备注信息"
  4. 如果需要查看历史记录:git reflog
    • 每一条记录最前面的数字是分支的版本号,表示分支的版本,每个分支的版本号不同,每一个分支每进行一次commit操作,都会更改一次版本号
    • HEAD表示当前版本 ,HEAD^表示上一个版本,HEAD^^表示上上一个版本。。。,当表示多个之前的版本,也可以用HEAD~5,其中5表示前第五个版本
  5. 如果需要对比当前版本和上一个版本时:git diff HEAD HEAD^ --需要对比的文件,结果中会对比不同的内容,红色显示当前版本的代码,绿色显示上一个版本的代码
    • 若只写当前版本,git diff HEAD --需要对比的文件,表示拿当前版本和工作区进行对比
  6. 若需要版本回退
    • 先使用git reflog 查看需要回退的版本号
    • 使用git reset HEAD^或者HEAD~2或者版本号进行回退到相应版本,注意此时是回退到暂存区
    • 需要将回退结果显示在工作区,需要再使用git checkout -- 需要显示的文件
  7. 当需要删除仓库区的某个文件时,使用git rm 删除的文件,然后提交git commit -m "删除了某个文件的描述信息"
  8. 当正在开发新的功能,线上的网站出现BUG需要解决:
    • 保存当前工作区:git stash
    • 切换到master分支:git checkout master
    • 创建新的debug分支:git checkout -b debug001
    • 对master分支中的bug进行更改。。。
    • 修改完毕,需要提交修改结果到仓库区:git add ./;git commit -m "修复**bug"
    • 找测试人员充分测试
    • 切换到master分支 :git checkout master
    • 使用no-ff将debug分支合并到master分支中:git merge --no-ff -m "修复的描述信息" bug001
    • 删除debug001分支:git branch -d debug001
    • 切换回itcast1分支,准备继续开发:git checkout itcast1
    • 恢复保存的工作区:git stash pop
    • 继续开发

合并项目过程

 - 上传遵循依次上传的的原则
 - 上传到dev分支里
  1. 第一个开发人员itcast1,先转换到dev分支里,将itcast1分支合并后,将服务器的dev分支,pull下来:git pull
  2. 商量着处理冲突代码,处理完毕。上传到仓库区:git add ./;git commit -m "上传**功能"
  3. 将合并后的dev分支上传到服务器:git push origin/dev
  4. 第二个开发人员itcast2,先切换到dev分支里,将自己的itcast2代码合并到dev分支后,将第一个开发人员上传的dev分支pull下来:git pull
  5. 商量着处理冲突,并且上传到仓库区:
  6. 上传处理好冲突的dev分支:git push origin/dev
  7. 其他开发人员依次执行4-6步
  8. 代码全部合并完并且调试无Bug后,所有前面提交的人员pull下来最终的dev分支:git pull dev,merge到自己的开发代码中,继续开发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值