版本管理系统--git(完整)
4.1 目录
- 集中式和分布式版本管理
- git常用命令
- git log 分析与检索
- git分支管理
- 分支开发主干发布模式
4.2集中式VS分布式
集中式
- ①代码的拉取提交需要联网,否则无法工作
-  ②需要一台中央服务器(版本库)如果中央服务器出问题,所有人无法工作
-  ③闭源集中式,增加项目资金的使用
分布式
- ①不联网也可以提交代码、查看历史、切换分支等等
- ②克隆远程仓库之后,每个人都是一个独立的完整版本库,容错率高
- ③开源分布式,节省项目资金的使用
参考:https://juejin.im/post/6844904179048120327
4.3 Git 常用命令
4.3.1 安装
mac安装:brew install git
配置用户名和邮箱: git config --global user.name "XXX"
git config --global user.emali "XXX"
查看全局配置:git config -l
4.3.2 初始化git,提交一个文件,并修改后重新提交
        初始化一个Git仓库,使用git init命令。     -->> 会生成.git 文件
添加文件到Git仓库,分两步:
                1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
                2. 使用命令git commit -m <message>,完成。
        
    git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
git diff 查看改的内容
       
4.3.3 git做了什么?
       
工作区--临时仓库--仓库
4.3.4 撤销修改
4.3.4.1 撤销本地工作区修改
git checkout -- 文件名 (撤销工作区的文件修改)
        
4.3.4.2 撤销临时仓库修改
git reset HEAD readme.md (撤销临时仓库的文件修改,此时如果真的不想要这些内容,则还需要撤销工作区的文件修改,即进行上一步操作)
       
4.3.4.3 撤销仓库修改
git reset --hard HEAD^ (撤销提交到仓库的文件修改) ^代表上一个存档
git log 查看提交日志 ,找出要撤回到的版本
        
4.4 GitHub服务器 --临时网络硬盘
4.4.1 GitHub配置
        
       
4.4.2 配置秘钥
查看是否存在id_rsa 和 id_rsa.pub文件
        
如果没有存在SSH key ,则需要先生成一下
ssh-keygen -t rsa -C "XXX@qq.com"
        
4.4.3 新建一个项目
        
        
新增项目成功,如图所示,对于第一次提交需要操作的命令,在新建的项目中有明确提示
       
4.4.4 将本地代码推送到远程仓库
git remote add origin git@github.com:XXX 添加远程仓库
         git remote add origin https://github.com/fanpl-sourse/study.git
git push -u origin master 将本地代码上传到远端 (首次操作时,需要建立关联,所以要写-u origin master)
推送完成后,远程仓库就有了本地提交的文件,如图
             
4.4.5 多次提交合并到一个版本上
git rebase -i 版本名: 合并几次提交到一次上
               
 
4.8  分支开发主干发布
git branch <分支名> : 创建分支
git checkout <分支名>:切换分支
git checkout -b <分支名>:创建并切换分支 (合并了上面的两个步骤)
              
 
git branch : 查看分支
git merge <分支名> : (切换到master分支后,才能进行merge操作)把dev分支上的内容合并到master分支上
git push : 提交到远端
            
git branch -d <分支名> : 删除分支
学习网址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
4.9 日常操作场景范例
4.9.1.我想基于master 分支 创建一个新的qa分支
git checkout master
git branch qa
git checkout qa
4.9.2. 我对之前创建的分支不满意,需要删除 (不能在要删除的分支中进行操作)
git branch -D qa 删除本地的qa 分支
git push origin qa --delete 删除远程仓库的qa分支
4.9.3. 我在qa分支中进行了代码编辑或新增,需要提交到远程仓库
git add .
git commit -m 'xxxxx'
git push origin HEAD:refs/for/qa
4.9.4. 同事修改了qa分支内容,我要获取最新的内容
git fetch
git rebase origin/qa : 将远程内容合并到本地qa分支
4.9.5. 我需要把qa分支代码合并到master
git checkout master
//以下2步是保证可能存在master有更新的情况
git fetch
git rebase origin/master
git merge qa
git add .
//如果代码存在冲突或修改,就使用命令 git commit -m 'xxxxx'
git commit --amend 提交当前内容,但是不产生新的commit ID, 使用上一次未submit 的 commit ID
git push origin HEAD:refs/for/master
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号