• git的基本使用


    Git管理

    Git是分布式管理.服务器和客户端都有版本控制能力,都能进行代码的提交、合并、源代码特点

    Git会在根目录下创建一个.git隐藏文件夹,作为本地代码仓库

    Git操作流程图解

    Git服务器 --> 本地仓库 --> 客户端 --> 本地仓库 --> Git服务器

    2.工作区暂存区和仓库区

    工作区

    对于添加、修改、删除文件的操作,都发生在工作区中

    暂存区

    暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分

    仓库区

    仓库区表示个人开发的一个小阶段的完成

    仓库区中记录的各版本是可以查看并回退的

    但是在暂存区的版本一旦提交就再也没有了

    3. Git单人本地仓库操作

    课程目标:学习常用的Git终端命令

    提示:本地仓库是个.git隐藏文件

    1.安装git

      sudo apt-get install git

    2.查看git安装结果

    Git

    3.创建项目

    在桌面创建test文件夹,表示是工作项目

    Desktop/test/

    4.创建本地仓库

    进入到test,并创建本地仓库.git

    新创建的本地仓库.git是个空仓库

    cd Desktop/test/

    git init

    5.配置个人信息

      git config user.name '张三'

      git config user.email 'zhangsan@163.com'

    默认不配置的话,会使用全局配置里面的用户名和邮箱 全局git配置文件路径:~/.gitconfig

    6.新建py文件

    在项目文件test里面创建login.py文件,用于版本控制演示

    7.查看文件状态

    红色表示新建文件或者新修改的文件,都在工作区.

    绿色表示文件在暂存区

    新建的login.py文件在工作区,需要添加到暂存区并提交到仓库区

    git status

    8.将工作区文件添加到暂存区

      # 添加项目中所有文件

      git add .

      或者

      # 添加指定文件

      git add login.py

    9.将暂存区文件提交到仓库区

    commit会生成一条版本记录

    -m后面是版本描述信息

    git commit -m '版本描述'

    10.接下来就可以在login.py文件中编辑代码

    代码编辑完成后即可进行addcommit操作

    提示:添加和提交合并命令

    提交两次代码,会有两个版本记录

    11.查看历史版本

      git log

      或者

      git reflog

    git reflog 可以查看所有分支的所有操作记录(包括commitreset的操作),包括已经被删除的commit记录,git log 则不能察看已经删除了的commit记录

    12.回退版本

    方案一:

    HEAD表示当前最新版本

    HEAD^表示当前最新版本的前一个版本

    HEAD^^表示当前最新版本的前两个版本,以此类推...

    HEAD~1表示当前最新版本的前一个版本

    HEAD~10表示当前最新版本的前10个版本,以此类推...

    git reset --hard HEAD^

     

    13.撤销修改

    只能撤销工作区、暂存区的代码,不能撤销仓库区的代码

    撤销仓库区的代码就相当于回退版本操作

    1. 撤销工作区代码

    新加代码num3 = 30,不add到暂存区,保留在工作区

    git checkout 文件名

    1. 撤销暂存区代码

    新加代码num3 = 30,并add到暂存区

    # 第一步:将暂存区代码撤销到工作区

    git reset HEAD  文件名

    # 第二步:撤销工作区代码

    git checkout 文件名

    14.删除文件:删除文件分为确定删除和误删

    在项目中新建test.py文件,并添加和提交到仓库

    确定删除处理:

      # 删除文件

      rm 文件名

      # git确定删除文件,对比添加文件git add

      git rm 文件名

      # 删除后记录删除操作版本

      git commit -m '删除描述'

    误删处理:撤销修改即可

      # 删除文件

      rm 文件名

      # git撤销修改

      git checkout -- 文件名

    Git远端仓库(码云或GitHub)

    提示:Github网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已!

    准备Git源代码仓库 https://github.com/

    准备经理的文件 Desktop/manager/

    准备张三的文件 Desktop/zhangsan/

    1. 创建远程仓库
    2. 登陆注册Github
    1. 创建仓库入口
    2. 创建仓库信息
    1. 仓库创建完成
    1. 查看仓库地址
    1. 查看仓库地址
    1. 克隆项目

    准备经理的文件 Desktop/manager/

    准备张三的文件 Desktop/zhangsan/

    经理的工作:

    立项:克隆远程仓库+配置身份信息+创建项目+推送项目到远程仓库

    1. 克隆远程仓库的命令

    cd Desktop/manager/

    git clone https://github.com/zhangxiaochuZXC/test007.git

    1. 克隆远程项目到本地
    1. 克隆成功后查看经理的文件
    1. 配置经理的身份信息

    cd Desktop/manager/test007/

            git config user.name '经理'

            git config user.email 'manager@163.com'

    1. 创建项目
    1. 推送项目到远程仓库

       # 工作区添加到暂存区

       git add .

       # 暂存区提交到仓库区

       git commit -m '立项'

       # 推送到远程仓库

       git push

    push 的时候需要设置账号与密码,该密码则是 github 的账号与密码

    如果在每次 push 都需要设置账号与密码,那么可以设置记住密码

    设置记住密码(默认15分钟):

    git config --global credential.helper cache

    如果想自己设置时间,可以这样做(1小时后失效)

    git config credential.helper 'cache --timeout=3600'

    长期存储密码:

    git config --global credential.helper store

    在以后的项目开发过程中,Pycharm 可以自动记住密码

    张三的工作

    获取项目:克隆项目到本地、配置身份信息

    1. 克隆项目到本地

       cd Desktop/zhangsan/

       git clone https://github.com/zhangxiaochuZXC/test007.git

    1. 克隆成功后查看张三的文件
    1. 配置张三身份信息

      cd Desktop/zhangsan/test007/

      git config user.name '张三'

      git config user.email 'zhangsan@163.com'

    张三身份信息配置成功后即可跟经理协同开发同一个项目

    1. 多人协同开发
    2. 代码编辑界面介绍, gedit做演示

    代码编辑界面左边为模拟经理的操作

    代码编辑界面右边为模拟张三的操作

    1. 模拟张三先编辑login.py文件代码

    进入张三本地仓库:cd Desktop/zhangsan/test007

    编辑代码:num1 = 10

    本地仓库记录版本:git commit -am '第一个变量'

    推送到远程仓库:git push

    1. 拟经理后编辑login.py文件代码

    进入经理本地仓库:cd Desktop/manager/test007/

    经理同步服务器代码:git pull

    编辑代码:num2 = 20

    本地仓库记录版本:git commit -am '第二个变量'

    推送到远程仓库:git push

    1. 模拟张三同步服务器代码

    本次可以把num2同步到张三的本地仓库

    1. 按照以上2-3-4步骤循环操作,即可实现基本的协同开发
    2. 总结

    要使用git命令操作仓库,需要进入到仓库内部

    要同步服务器代码就执行:git pull

    本地仓库记录版本就执行:git commit -am '版本描述'

    推送代码到服务器就执行:git push

    编辑代码前要先pull,编辑完再commit,最后推送是push

    1. 代码冲突
    2. 冲突原因

    提示:多人协同开发时,避免不了会出现代码冲突的情况

    原因:多人同时修改了同一个文件

    危害:会影响正常的开发进度

    注意:一旦出现代码冲突,必须先解决再做后续开发

    1. 演练
      1. 张三先编辑login.py文件代码

    进入张三本地仓库:cd Desktop/zhangsan/test007

    拉取服务器最新代码:git pull

    编辑代码:num3 = 30

    本地仓库记录版本:git commit -am '第三个变量'

    推送到服务器仓库:git push

    张三本地仓库和远程仓库代码如下:

    1. 经理后编辑login.py文件代码

    进入经理本地仓库:cd Desktop/manager/test007/

    编辑代码:num3 = 300

    本地仓库记录版本:git commit -am '第三个变量'

    推送到服务器仓库:git push

    以上操作会出现代码冲突:

    1. 提示需要先pull
    1. 提示冲突文件
    1. 冲突代码表现
    1. 解决冲突

    原则:谁冲突谁解决,并且一定要协商解决

    方案:保留所有代码 或者 保留某一人代码

    解决完冲突代码后,依然需要addcommitpush

    提示:如果张三执行pull没有影响,就算真正解决了冲突代码

    容易冲突的操作方式

    多个人同时操作了同一个文件

    一个人一直写不提交

    修改之前不更新最新代码

    提交之前不更新最新代码

    擅自修改同事代码

    减少冲突的操作方式

    养成良好的操作习惯,pull在修改,修改完立即commitpush

    一定要确保自己正在修改的文件是最新版本的

    各自开发各自的模块

    如果要修改公共文件,一定要先确认有没有人正在修改

    下班前一定要提交代码,上班第一件事拉取最新代码

    一定不要擅自修改同事的代码

    5.分支

    作用:

    区分生产环境代码以及开发环境代码

    研究新的功能或者攻关难题

    解决线上bug

    特点:

    项目开发中公用分支包括masterdev

    分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支

    分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支

     

    模拟经理分支操作:

    对比:操作分支前的代码

    1. 进入到经理的本地仓库test007

     cd Desktop/manager/test007/

    1. 查看当前的分支

      git branch

    没有创建其他分支时,只有master分支

     

    1. .经理创建并切换到dev分支

    git checkout -b dev

    1. 设置本地分支跟踪远程指定分支(将分支推送到远程)

    git push -u origin dev

    1. 经理在dev分支编辑代码
    1. 管理dev分支源代码:addcommitpush
    1. dev分支合并到master分支

    提示:只有当dev分支合并到master分支成功,张三才能获取到num4

    7.1 先切换到master

      git checkout master

            

    7.2 dev分支合并到master分支

    git merge dev

    7.3 经理推送合并分支操作到远程仓库

    合并分支默认在本地完成,合并后直接推送即可

    git push

    1. 张三同步经理合并后的num4

    只有当张三同步代码成功,分支合并才算成功

      cd Desktop/zhangsan/test007/

      git pull

    有需要的话可以关注我的微信公众号,会第一时间接收最新的知识。

  • 相关阅读:
    python第八课
    python第七课
    python第六课
    python第五课
    Python基础30类-内置函数实现迭代器协议
    Python基础29类-内置函数(__format__,__slots__,__doc__,__module__,__del__,__call__)
    Python基础28类-内置函数(__getattribute__,__getitem__,__setitem__.__delittem__)
    Python基础27类-包装、组合方式授权、判断对象类型的方法
    Python基础26类-内置函数__setattr__,__getattr__,__delattr__
    Python基础25类-反射
  • 原文地址:https://www.cnblogs.com/liudemeng/p/9909025.html
Copyright © 2020-2023  润新知