• Git 使用教程


    一、git安装、介绍和使用

    介绍:

    用来做代码管理(文件管理)

    • 1、帮助开发者合并开发的代码

    • 2、如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突

    • 3、代码版本管理

    代码管理软件分为两种

    • git 目前使用的最多
    • svn

    git 与svn比较

    • svn:集成式管理,服务端挂掉就做不了版本管理、代码合并
    • git:分布式管理,服务端挂掉,本地还可以继续做版本管理,代码合并

    git安装:

    # 1、安装地址:https://git-scm.com/download/win
    
    # 2、下一步,完成安装
    
    # 3、检查是否安装完成
    	1.在cmd输入git命令 检查是否安装完成
    	2.鼠标右键,单击桌面 查看是否有git打开方式
    

    1、git、gitee、github、gitlab

    - git:
    	# 版本管理软件,装在操作系统上,有很多命令
    
    - gitee:
        # 国内最大的开源远程仓库
        # 小公司---》使用gitee的私有仓库
        # 远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置
     
    - github:
    	# 国际上最大的开源远程仓库
    	# 远程仓库:开源代码,私有代码,有个网站,可以看到有哪些开源代码,通过网站做一些配置
        
    - bitbucket:
     	# 只有私有仓库
    	# 远程代码仓库
    
    - gitlab:
    	# 公司内部的远程仓库
    

    2、git使用流程

    # git分为三个区
        -工作区    存放文件的地方
        -暂存区    工作区的变更,提交到暂存区
        -版本库    暂存区的内容,提交到版本库
     
    # 三个区相互操作
    	-下面学的命令,就是在操作这三个区
    

    3、git常用命令

    1.管理文件:

    # 1、打开需要被git管理的文件
    
    # 2、右键单击 git bash here
    
    # 3、输入命令 git init
    
    # 4、被管理的文件夹中出现 .git文件夹
    
    '''
    	也可以直接在cmd中输入命令指定需要被管理的文件路径
    '''
    

    2.查看文件变化:

    1、在被git管理的文件下打开git命令窗口
        git status
        # 看到有两种颜色
            -红色:工作区变化了,但是没有提交到暂存区
            -绿色:已经提交到暂存区,没有提交到版本库
            -没有:所有东西都在版本库中了[所有文件都被git管理起来了]
    

    3.把文件移交到暂存区:

    1、把工作区变更的文件(红色的文件)提交到暂存区
    	git add .   #  . 提交所有变更的文件
    	dit add 文件名  # 指定某个文件提交
        
    2、把暂存区的文件拉回到工作区[由绿变红]
    	git reset HEAD
        
    3、把工作区的变更,回退  【还没有放到暂存区】
        -增加的内容,删除
        git checkout .
    

    3.把暂存区文件提交到版本库:

    1、将暂存区的文件提交到版本库(作为一个版本)
    	git commit -m '注释'  # 注释内容必须填写
      
    
    

    4.设置作者:

    1、将暂存区的文件提交到版本库,必须设置作者
    	# 全局作者  所有文件提交版本都用此作者
            git config --global user.email "邮箱"
            git config --global user.name "作者名字"
            
    	# 局部作者 当前文件提交版本用此作者
            git config user.email "作者邮箱"
            git config user.name "作者名字"
    

    4.查看版本库,下载版本库:

    1、查看版本库:
    	git log  # 查看详细的版本库  可以看到提交人,详细的commit信息
    	git reflog  # 查看简单的版本库,
        
    2、回归到某个版本
        -只要被版本管理了,可以回退到任意版本
        git reset --hard 版本号
    

    总结:

    记住的:
        git add  # 工作区---》提交到暂存区
        git commit -m  # 暂存区--》提交版本库
        git reset --hard 版本号  # 回归版本
    会用:
        git init  # 管理文件夹
        git status  # 查看被管理的文件情况
        git log  # 查看版本库 详细
        git reflog	# 查看版本库 简略
    
    了解:
        git checkout .  # 回滚工作区的内容
        git reset HEAD  # 将暂存区的回到工作区
        git config --global user.email "306334678@qq.com"  # 设置作者
        
        
    """
        1)有红色信息(工作区有内容),就执行 add 
        2)全绿信息(内容全部在暂存区),才执行 commit
        3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
        空文件夹不会被git记录
    """
    

    4、git忽略文件

    # 咱们项目中,有些文件,或文件夹不想被git管理
    	-比如:
            -node_models
            -.idea
            -xx.pyc  # python 的编译文件
            
    # 使用步骤
    	-1 在仓库目录下  .git 所在目录下   新建  .gitignore
        -2 在里面写忽略文件
        	mode_models  # 直接忽略该文件
            .idea  # 忽略.idea文件
            *.pyc  # 忽略 xxx。pyc结尾的文件
            *.log  # 同上
        -3 写的就会被忽略
     
        -4 已经被管理过的不会被忽略
        
    # 忽略文件写法
        文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
        /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
    
    例如:
        a.txt:项目中所有a.txt文件和文件夹都会被过滤
        /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
        /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
        *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
        空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件
    

    5、git多分支

    什么是多分支:

    通过建立分支,来保证每个阶段的项目都可以顺利运行,master分支(主分支)用来存放每一阶段完成的项目,dev(开发分支)用来开发项目,当dev分支代码编写完成时,将完成的代码合并到master分支上,接着再回到dev分支开发代码,直到项目完全编写出来,这样的好处是每一个阶段的代码都可以运行

    公司常用分支方案:小公司

    - master分支、dev分支、bug分支:
    	在dev分支发开代码,开发完成合并到master分支,master分支出现bug到bug分支修复
        
    - master分支、dev分支、bug分支 、个人分支
    	在个人分支上开发,开发完成合并到dev分支
    

    常用分支操作:

    - 查看已建立的分支:
    	git branch
    	
    - 创建分支:
    	git branch 分支名 
    	
    - 切换分支:
    	git checkout 分支名
    	
    - 删除分支:
    	git branch -d 分支名
    	
    - 合并分支:(重要)
    	例如: 把dev分支合并到master分支
    		1、先来到master分支: git checkout master
    		2、执行合并分支命令: git merge dev
          	# 分支合并可能会出现冲突 ---- 下面讲解
            
    

    6、git远程仓库

    简介:

    将本地的版本库提交到远程仓库

    gitee搭建远程仓库: 操作步骤:

    本地:
        1 在 luffy_api 项目敲 git init 
        2 设置忽略文件(.gitignore)
        3 git add .
        4 git commit -m '第一次提交'
        ------提交到了本地版本库-------被版本管理了
     
    远程:
        1 创建gitee账号
        2 创建仓库:gitee上创建仓库,右上角 +
        3 填一些信息,保证仓库是空的
        
    本地:
        1 安装远端提示的步骤操作
        2 设置用户和邮箱
        3 咱们是已有仓库
        # 添加一个远程仓库地址名字叫origin,地址是xxx
        git remote add origin https://gitee.com/liuqingzheng/luffy_api.git
        # 把本地的版本库推送到远程仓库
        # 把本地当前所在分支,推送到 origin 对应的远程的master上
        git push origin master
        # 需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理)
        
        
    '''
    
    1、填写的密码会被存放在本机的Windows凭据管理中
    
    '''
    

    7、ssh链接远程仓库

    什么是ssh:

    通过公钥私钥的方式链接远程仓库,不用在通过账号密码的方式链接

    -私钥在本地保存
    -公钥配置到gitee上
    -以后再提交代码,不需要其他任何认证
    

    使用步骤:

    - 1、生成公钥私钥:https://gitee.com/help/articles/4181
     
    - 2、在cmd窗口输入命令
        -ssh-keygen -t ed25519 -C "694702725@qq.com" 
        -生成在:C:\Users\Administrator\.ssh  # 两个文件,一个公钥,一个私钥(带后缀)
        
    - 3、把公钥,配置在gitee上
    	打开公钥文件,复制内容到gitee中配置
    
    - 4、之前origin对应的地址是 https的,现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
    	git remote remove origin
    	git remote add origin 'ssh地址'  # ssh地址可在仓库下载地址中选择ssh复制
        
    

    8、协同开发

    什么是协同开发:

    创建仓库之后,可以邀请多人协同开发,通过设置仓库内成员身份(开发者),对仓库代码具有读写权力

    协调开发 clone 代码:

    作为开发者,加入仓库后,第一件事需要将仓库内的代码 clone (克隆)下来,然后进行操作

    
    1、将代码从远程仓库 clone 下来
    	git clone 仓库地址  # 可以选择clone的方式  例如:ssh链接,默认http
       
    2、使用pycharm打开clone的代码,配置好解释器,安装项目依赖
    

    协调开发 push 代码:

    代码编辑完成后,需要将代码 push(推)至远程仓库

    1、git add .  # 先add至工作区
    
    2、git commit -m 注释  # 添加至本地版本库
    
    3、设置用户名和邮箱
        git config user.name 作者 
        git config user.email 邮箱
        
    4、将代码push至远程仓库
    	git push origin master
    

    9、解决冲突

    什么是冲突:

    当多人对同一分支代码进行操作时,如果A已经push到远程仓库,那么B就无法跨过A的本本就行push,需要先将A的代码pull(拉)至本地,然后才能进行push,但是这样就会出现问题,加入A和B当前操作的代码都一样,这时就会出现冲突,冲突会将两人相同或重叠部分的代码进行标注

    冲突的样子:

    # 多人在同一分支开发冲突
    	-张三:
        	git pull origin master
            在requirements.txt,最后一行加入 lqz
            git add .
            git commit -m 
            git push origin master
            
            
            
        -我:
        	在requirements.txt,最后一行加入 lqz
            git add .
            git commit -m 
            git pull origin master
            # 冲突了
            # 解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交
            # 提交到远程仓库,这是解决后的
            
            
            
    # 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
        <<<<<<< HEAD   我的代码
        print('刘亦菲')
        =======   它的代码
        print('彭于晏')
        >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
        
    # 冲突出现的原因2,分支合并出冲突
    	-我:
        1 创建dev分支 
        	git branch dev
        2 在dev分支的views.py 中第2行加入代码
    
        3 提交到本地仓库
            
            
       -我:
        1 在主分支的views.py 中第2行加入代码
        2 提交到版本库
    
        3 在主分支合并代码  
        	git merge dev
        4 冲突了,解决冲突
        5 再提交代码,到此结束
    

    如何避免冲突:勤拉去代码可以减少冲突的出现

    10、线上合并分支

    # 线下分支合并
    	git merge dev
        
        
    # 线上 分支合并
        - gitee上,新建一个分支 ,点点点创建出来
        -本地同步远程dev分支
            git pull origin dev  # 拉下来了,还看不到,只有切过去,才看的到
            git checkout dev
        -在dev上开发开发
        随便加代码
            git add 
            git commit 
        # 提交到本地的dev了
    
        - 推到远端 dev
            git push origin dev
        -master中没有代码,dev中有提交的,现在要线上分支合并
        -把远程的dev合并进远程的master
        - 提交pr    提交rr
        -在网站上,申请提交pull request
        -领导审核,测试,通过后,点击合并
        -线上dev就合并进线上的master了
    

    11、远程仓库回滚

    # 你不要用
    # 想远程的代码,是最初的状态
    
    # 步骤:
        1 本地版本回退
        	git reset --hard 版本号
    
        2 强行推到远端
        	git push origin master -f
    
  • 相关阅读:
    【STM32】标准库的引入
    编译和连接
    安装Jenkins
    1667. 修复表中的名字
    Credly 数字证书
    第七章《Java的异常处理》第1节:异常的概念及处理方式
    一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了
    使用主成分分析进行模态分解(Matlab代码实现)
    Netty之I/O模型比对
    Nuxt3第二篇【路由】
  • 原文地址:https://www.cnblogs.com/kangssssh/p/17173029.html