• Git


    版本控制器--Git(注意版本号)

    什么是版本控制器?

    版本控制器就是管理项目的工具,用于记录和存储项目的更新迭代和备份等信息,以更好的控制项目的生命周期,有效减少风险。

    如果是团队开发同一个项目,版本控制器可以整合代码,提醒代码的冲突问题

    集中式和分布式版本控制器

    集中式版本控制器

    代表:svn

    只有一个集中管理的服务器,保存所有文件的修改,多个客户端连接这个服务器,提交和更新文件

    问题:

    如果服务器被黑或者出现了异常,代码可能丢失,开发进度将会被拖延,而且必须联网才能正常工作

    分布式版本控制器

    代表:git

    Git只关心文件数据整体变化,保存每次项目的快照,而且是分布式的,每一天电脑都可以作为服务器,也可以同时开发(客户端和服务端整合)

    git工作流程

    常用命令

    cd 
    cd ..
    ls
    ll
    编辑文件
    vi
    i 进入编辑
    esc 退出编辑
    :wq 保存退出
    

    创建全局用户

    首先得创建全局用户,否则不让commit
    
    git config --global user.name
    git config --global user.email
    
    全局配置文件在C:Users用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用,创建的用户就在里面
    

    创建仓库用户-局部用户

    git config  user.name
    git config  user.email
    
    局部配置文件在.git的config里面
    .git就是进行版本控制的核心
    

    git四大核心命令

    git init 初始化仓库(.git)
    git add  添加改变到暂存区
    git status 查看当前仓库的状态
    git commit -m ''把暂存区的的变化提交到版本库(生成版本号)
    
    git add .
    git status -s 简约显示
    

    回滚

    工作区

    git checkout filename
    git checkout .
    
    放弃文件的修改,相对于上次的版本,只针对于文本内容的修改,新建文件等无效
    

    暂存区

    git reset HEAD .
    撤销所有暂存区的提交
    
    git reset 文件名
    撤销某一文件的暂存区提交
    

    版本库

    查看历史版本
    git log
    git reflog
    精简模式显示
    git log --pretty=oneline
    
    查看时间点之前|之后的日志:
    >: git log --after 2018-6-1
    >: git log --before 2018-6-1
    >: git reflog --after 2018-6-1
    >: git reflog --before 2018-6-1
    查看指定开发者日志
    >: git log --author author_name
    >: git reflog --author author_name
    回滚到指定版本:
    回滚到上一个版本:
    >: git reset --hard HEAD^
    >: git reset --hard HEAD~
    回滚到上三个版本:
    >: git reset --hard HEAD^^^
    >: git reset --hard HEAD~3
    回滚到指定版本号的版本:
    >: git reset --hard 版本号
    >: eg: git reset --hard 35cb292
    

    但是回退版本后,git log是看不到回退之前的版本的,如果想回退之前的版本,要确保此窗口没有关闭,然后根据之前打印的版本号回退执行下面命令,版本号写一部分就行

    查看区别和删除

    命令可以查看工作区和版本库里面最新版本的区别
    git diff HEAD -- zx.txt
    
    删除文件,最后也要提交
    git rm 
    

    过滤文件 .gitignore

    在仓库根目录下创建该文件
    
    过滤文件内容
    文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
    /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤(/代表根目录)
    
    
    a.txt:项目中所有a.txt文件和文件夹都会被过滤
    /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
    /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
    
    *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
    
    空文件夹不会被提交,空包会被提交(python的包)
    

    django

    # 过滤条件一定要在第一次提交版本库之前完成
    # 各类编辑器产生的配置文件
    .idea
    .vscode
    *.suo
    *.ntvs*
    *.njsproj
    *.sln
    *.sw?
    
    # 日志文件
    *.log
    *.logger
    
    # 本地测试文件
    scripts
    
    # 导包缓存文件
    *.pyc
    __pycache__
    

    远程仓库

    前提

    1.本地有仓库
    2.本地配置了用户信息
    3.有ssh密钥
    4.配置了远程仓库的源
    

    创建公钥

    官网:https://gitee.com/help/articles/4181#article-header0
    
    创建好之后记得在远程仓库配置好,在user文件夹内的ssh内
    

    ssh和https

    ssh会自动提交本地的ssh密钥
    https需要账号密码
    

    remote 源操作

    一般在远程仓库创建好之后就会直接提示源的信息

    1)查看仓库已配置的远程源
    git remote
    git remote -v
    
    2)查看remote命令帮助文档
    git remote -h
    
    3)删除远程源
    git remote remove 源名
    
    git remote remove origin
    
    4)添加远程源
    git remote add 源名 源地址
    git remote add orgin git@*.git
    
    git remote add origin git@gitee.com:ZX125/ZX_jy.git
    

    配置完成,可以提交到远程

    克隆一次

    后面

    先拉(处理冲突)在拉(没有冲突的话,交)

    后提交

    #克隆
    git clone git@gitee.com:ZX125/ZX_jy.git
    
    #提交
    git push -u origin master
    
    #更新
    git pull origin master
    

    乱码问题

    [gui]
        encoding = utf-8
    
    git config --global core.quotepath false
    git states 乱码
    

    冲突问题-原理

    方框内的是版本号,冲突的原理就是版本号

    1.如果本地的版本号(1-a)线上版本号是(1-a-b)就直接更新到(1-a-b)

    2.如果本地的版本号(1-a)线上版本号是(1-b),版本号冲突,解决冲突后提交,版本(1-a-b-c)

    分支操作

    创建分支就相当于复制一份当前分支,作为独立的分支,不会相互影响

    git合并(merge)

    git合并其实也没有什么东西,就是类似于本地和线上master的操作是怎么样,那么本地两条分支之间的操作就是什么样的

    git merge zx 就是把zx的修改同步到本分支

    1.创建分支
    >: git branch 分支名
    
    2.查看分支
    >: git branch
    
    3.切换分支
    >: git checkout 分支名
    
    4.创建并切换到分支
    >: git checkout -b 分支名
    
    5.删除分支
    >: git branch -d 分支名
    
    6.查看远程分支
    >: git branch -a
    
    7.合并分支
    >: git merge 分支名
    

    参考链接

    https://www.cnblogs.com/Sungeek/p/9152223.html

    https://www.cnblogs.com/best/p/7474442.html

  • 相关阅读:
    java:线上问题排查常用手段
    去fastjson笔记
    如何让java中的注释代码执行?
    spring中aop不生效的几种解决办法
    mysql事务隔离级别/脏读/不可重复读/幻读详解
    业务系统-全球化多时区的解决思路
    mysql虚拟列(Generated Columns)及JSON字段类型的使用
    freeswitch笔记(7)-放音控制
    JVM问题典型案例定位学习
    freeswitch笔记(6)-会议功能简介
  • 原文地址:https://www.cnblogs.com/zx125/p/11965792.html
Copyright © 2020-2023  润新知