当前位置: 首页 > article >正文

java 实训第12天 (git版本控制继续)

Linux下使用到的命令:
    ls -al    //查看当前目录下的文件及文件夹
    mkdir     //新建目录
    rm -rf    //递归强制删除文件夹

版本控制
一、安装配置
1、下载地址
    https://git-scm.com/
    
2、初始配置
    #用户名
    git config --global user.name "自定义用户名"

    #邮箱(公司的联系方式--追责)
    git config --global user.email "邮箱地址" 

    说明:
        - 安装好git后,第一步就需要初始化个人信息。
        - 设置好后查询,检查是否配置成功,不加用户名或邮箱就代表查询

二、初始化本地仓库
1、版本库
    用于跟踪项目代码的仓库(目录),每个本地仓库中会创建一个隐藏文件夹
    .git 同级目录下做的所有操作都会被git监管。

2、初始化本地仓库
    在普通文件夹下执行如下命令,可以将该文件夹初始化为本地仓库:
    git init

3、本地仓库的构成
    - 工作区:存放代码的位置
    - 版本库:工作区中.git文件夹,其中包含暂存区 和 分支区
    - 暂存区:通过git add/rm命令执行后,操作保存的位置(类似于缓存区)
    - 分支区:是最终版本信息保存的位置,git commit 命令提交的信息都会存储在
            分支区,通常版本库初始化后会默认创建一个本地分支(master)
            也叫主分支。master最好不要删除。


    工作区代码发生修改--git add(添加)-->暂存区--git commit(提交)-->分支区
    

三、版本管理
1、提交新文件
    1-在工作区创建新文件
    2-查看本地仓库的状态 
        git status
    3-添加新建文件的状态到暂存区 
        git add 文件名
    4-将暂存区的状态提交到本地分支区
        git commit -m "备注信息"

2、修改文件
    与提交新文件的流程步骤相同
    

3、查看历史版本
    
    #查看提交的详细日志信息
    git log
    
    #查看基本日志信息
    git log --pretty=oneline

    #查看详细的操作日志
    git reflog
    
4、版本回滚
    git reset --hard HEAD^
    ---或者---
    git reset --hard commitID
    说明:
        - HEAD 头指针指向当前最新的代码(当前所在版本)
        - ^ 版本回滚到最近一次提交(回跳一个版本)
        - commitID: 执行commit时随机生成的id号,id号取前>=7位即可

5、代码撤销

#只撤销工作区的修改
git checkout -- <file>...

#撤销暂存区的状态
    第一步:从暂存撤销回工作区
    git reset HEAD <file>...

    第二步:撤销工作区
    git checkout -- <file>...
    
#已经提交到本地分支的只需要用版本回滚


6、删除文件
    情况一:通过物理删除,利用git记录操作
        - rm -f 文件
        - git add/rm 文件...
        - git commit -m "备注"

    情况二:利用git的rm命令执行删除
        - git rm 文件        #删除文件并添加暂存
        - git commit -m "备注"
        

四、远程仓库
1、定义
    如果需要将项目托管在支持git的服务中心时,要求服务中心能24小时运行,还可以
    提供其他的管理(用户,项目,用户组,权限)操作。
    
2、远程仓库分类
    Github        https://github.com/        国外
    码云        https://gitee.com/        国内
    极狐        gitlab,gitblit            私有

3、注册并新建远程仓库

    创建的远程仓库一般就是项目名。
    
    创建远程仓库的配置项:
        初始化仓库:
            选择语言 -- 选择开发项目的主要语言(计算机语言)
            .gitignore -- 配置到该文件的文件名或文件夹将不会被git跟踪管理
            开源许可 -- apache2.0
            
        设置模板:
            Readme文件 -- 项目的说明文件
        选择分支模型:
            没有特殊要求直接选为默认的master
            
4、远程仓库与本地仓库的关联

    由于本地的git与远程仓库进行代码跟踪时,对数据的安全性有绝对性要求。
    因此可以利用ssh协议完成数据传输的加解密过程。
    
    ssh配置流程:
        本地:
            1-在git bash上通过指令生成ssh的公钥和密钥(-t rsa表示加密算法)
                ssh-keygen -t rsa -C "git初始化时配置的邮箱地址"
            
            2-进入用户家目录下的.ssh文件夹
                cd ~/.ssh/
                
                说明:在文件夹中有两个文件id_rsa(密钥)  id_rsa.pub(公钥)
                    密钥文件自己保存,不能对外暴露。公钥是配置到要进行交互的服务端(码云)。
                    
            3-在码云控制台配置公钥
                控制台-设置-安全设置-ssh公钥-添加公钥
                说明:
                    公钥标题可以自定义,公钥在git bash中查看id_rsa.pub文件
                    cat ~/.ssh/id_rsa.pub
            
    仓库关联:
        情况一:远程仓库已经存在,只需要将仓库拉取到本地并完成关联。
        git clone git@gitee.com:用户名/仓库名.git
        
        情况二:先有本地仓库,再关联远程仓库
            1-先初始化本地仓库,项目根目录执行命令
                git init
            
            2-在远程创建一个名称与本地仓库同名的仓库
            3-远程仓库关联
                #在本地添加一个名叫origin的远程仓库地址
                git remote add origin git@gitee.com:用户名/仓库名.git
            
                #将远程代码拉取到本地,并解决历史差异
                git pull origin master --allow-unrelated-histories
                
                #在第一次推送本地代码到远程仓库时可以添加-u参数
                git push -u origin master
        
五、集成git工具到idea编辑器
    file->settings->versioncontrol->git

        
六、分支管理
1、查询本地所有分支
    git branch
    
2、创建本地分支
    git branch 分支名称

3、切换分支
    git checkout 分支名称
    
4、创建并切换分支
    git checkout -b 分支名称

5、合并分支
    git merge 分支名    //快速合并(只保留一条master主分支)
    git merge --no-ff 分支名    //关闭快速合并(保留合并时的分支信息)
    
    注意:合并分支时需要先切换到主分支。
    
七、代码合并冲突处理
    如果有多个人修改了同一个文件会出现合并冲突。
    删除特殊内容:
        <<<<<<< HEAD
            原来的代码
        =====
            准备合并的新代码
        >>>>>>> 正在合并的分支

    当处理完合并冲突后,需要完成一次提交。


 


http://www.kler.cn/a/382688.html

相关文章:

  • string模拟实现流插入(输出)+流提取(输入)
  • 谷歌推出全新AI生成游戏玩法 —— 无限生成角色生活模拟游戏“Unbounded”
  • C#里计算SHA256,主要用来做文件校验
  • 【FL0013】基于SpringBoot和微信小程序的机电公司管理信息系统
  • Muse-Ant-Desgin-Vue 改造成 Vite+Vue3
  • Neo4j数据库清理指南:如何安全地删除所有节点和索引
  • 【无标题】特征降维的常见方法
  • 3D互动+AR试戴,重塑线上珠宝营销新体验!
  • 【题解】—— LeetCode一周小结44
  • 效果框架(效果ID3DXEffect)
  • ML 系列:机器学习和深度学习的深层次总结( 19)— PMF、PDF、平均值、方差、标准差
  • 浮动路由:实现出口线路的负载均衡冗余备份。
  • 【软考】错题分析1105
  • ONLYOFFICE 8.2深度测评——助力自动化办公
  • 2024系统架构师---论软件系统架构风格论文
  • Linux grep命令详解(多图、多示例)
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:数据存储分区的艺术与实践(下)(2/30)
  • HarmonyOS使用arkTS拉起指定第三方应用程序
  • 基于机器学习算法的中风患者数据分析与可视化预测设计与实现
  • 网络学习/复习4传输层UDP/TCP(协议属性详解、主机间连接状态详解)
  • Fsm serialdata
  • 练习LabVIEW第三十七题
  • 十二:java web(4)-- Spring核心基础
  • VS 中使用c#高版本语言方法
  • fs 中 rmSync 作用
  • 石墨舟氮气柜:半导体制造中的关键保护设备