zoukankan      html  css  js  c++  java
  • git操作

    linux基本命令

    $ df -h 查看磁盘分区
    $ pwd 返回当前位置所在的绝对路径
    $ ~ 退回到家目录
    $ ll .git/  在当前文件夹查看下一层文件夹.git(隐藏文件夹)下的文件信息
    $ ll 查看文件夹目录
    $ ll |less  查看文件夹目录
    $ ls -lA 查看隐藏文件
    $ ls -lA|less  查看隐藏文件
    $ cat .gitconfig 查看全局的隐藏文件
    $ vim good.txt 创建一个文件,并可在该文件内编辑内容  i 进入编辑模式(可在文件内写内容)
    esc 退出进入命令模式 :wq保存斌退出vim   :set nu 给文件内容设置行号   :set nonu取消行号
    $ touch 文件名  创建文件,同vim
    $ cat good.txt  查看文件内容
    
    

    Git的文件管理机制

    '''
    Git把数据看作是小型文件系统的一组快照,每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个连接指向之前存储的文件,所以Git的工作方式可以称之为快照流;
    '''
    

    版本控制器

    """
    完成 协同开发 项目,帮助程序员整合代码
    
    软件:SVN 、 GIT
    
    git:集群化、多分支
    """
    

    git

    简介

    """
    什么是git:版本控制器 - 控制的对象是开发的项目代码
    代码开发时间轴:需求1 > 版本库1 > 需求2 > 版本库2 > 版本库1 > 版本库2 
    """
    

    git与svn比较

    git的工作流程

    git分支管理

    git使用

    安装

    # 1.下载对应版本:https://git-scm.com/download
    # 2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项
    

    基础命令

    将已有的文件夹 - 初始化为git仓库
    """
    >: cd 目标文件夹内部
    >: git init
    """
    
    在指定目录下 - 初始化git仓库
    """
    >: cd 目标目录
    >: git init 仓库名
    """
    
    在仓库目录终端下 - 设置全局用户
    
    >: git config --global user.name '用户名'
    >: git config --global user.email '用户邮箱'
    
    注:在全局文件 C:Users用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用
    
    查看全局用户签名:
    cd ~  # 退到根目录
    ls -lA|less 查看.gitconfig隐藏的文件
    cat .gitconfig # 查看.gitconfig中的内容
    
    在仓库目录终端下 - 设置局部用户
    
    >: git config user.name '用户名'
    	-- 用户名
    >: git config user.email '用户邮箱'
    	-- 用户邮箱
    	
    注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
    注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户
    
    查看用户名、邮箱保存位置,先进入仓库(文件夹):
    $ cat .git/config
    
    
    查看仓库状态
    
    # 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看
    >: git status  
    	-- 查看仓库状态
    >: git status -s  
    	-- 查看仓库状态的简约显示
    
    
    工作区操作
    # 通过任何方式完成的文件删与改
    # 空文件夹不会被git记录
    
    撤销工作区操作:改、删
    """
    >: git checkout .
    	-- 撤销所有暂存区的提交
    >: git checkout 文件名
    	-- 撤销某一文件的暂存区提交
    """
    
    工作区内容提交到暂存区
    """
    >: git add .  
    	-- 添加项目中所有文件
    >: git add 文件名  
    	-- 添加指定文件
    """
    
    撤销暂存区提交:add的逆运算
    """
    方式1:
    $ git rm --cached good.txt
    
    方式2:
    >: git reset HEAD .
    	-- 撤销所有暂存区的提交
    >: git reset 文件名
    	-- 撤销某一文件的暂存区提交
    """
    
    提交暂存区内容到版本库
    # git commit -m "版本描述信息" 文件名
    eg:$ git commit -m 'my second commit -modify good.txt' good.txt
    
    
    撤销版本库提交:commit的逆运算
    """
    回滚暂存区已经提交到版本库的操作:
        查看历史版本:
            >: git log
            >: git reflog  指针HEAD@{移动到当前版本的步数}
            >:$ git log --pretty=oneline  将历史版本信息单行显示(简洁版),显示所有版本信息
            >:$ git log --oneline  单行显示比当前版本更低的版本,commit对应的hash值只部分显示
    
        查看时间点之前|之后的日志:
            >: 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
    
                # 强行将线上版本回滚到本地指定的版本  
                # 1.查看版本号:
                >:eg: git reflog
                # 2.本地仓库先回滚到指定版本
                >:eg:git reset --hard da5d
                # 3.线下版本同步到远程(线上)版本
                >:eg: git push origin dev -force
    
            恢复到指针当前指向的版本位置:
            	>:$ git reset --hard HEAD    # 执行$ rm apple.txt 操作,文件此时在暂存区,执行前面的操作可以恢复当前文件
    
    """
    
    log日志信息过多,需要多屏展示,展示方式如下:
    ​	空格向下翻页
    ​    b向上翻页
    ​    q退出
    
    reset命令的三个参数对比:
    --soft 参数
    	仅仅在本地库移动HEAD指针
        eg:$ git reset --soft ec666cc  查看版本库状态为绿色
    	原因:会把暂存区凸显出来
    --mixed参数
    	在本地库移动HEAD指针
        重置暂存区
        $ git reset --mixed  7c8d13a  查看版本库状态为红色
    	原因:本地库跟暂存区改变了位置,所以工作区被凸显,工作区还在原地,文件在工作区的状态还是红色,
    --hard参数
    	在本地库移动HEAD指针
        重置暂存区
        重置工作区
    

    比较文件差异

    git diff[文件名]
    	将工作区中的文件和暂存区进行比较
        eg:$ git diff apple.txt  会显示出两者内容的差异(git默认是以行内容区分两者差异的)
            
    #=================================   
    提交到缓存区之后,再次比较就没差异了
    $ git add apple.txt
    $ git diff apple.txt
    # ===============================
    git diff [本地库中的历史版本] [文件名]
    eg:$ git diff HEAD apple.txt  # 也会显示差异
        将工作区中的文件和本地库历史记录比较
    不带文件名比较多个文件
    eg:$ git diff HEAD
    
    

    过滤文件

    如何生成一个以.gitignore结尾的过滤文件呢?

    1.在Git仓库的根目录下面创建一个任意名称的.txt文件

    2.启动cmd窗口 cd到仓库的根目录 执行ren 原.txt文件名 .gitignore

    注意:其实还有一种简单的创建方式,如下:

    在创建以‘.’开头的隐藏文件时,需要在文件名末尾再加上一个‘.’就能创建成功。
    
    # .gitignore 文件
    # 1)在仓库根目录下创建该文件
    # 2)文件与文件夹均可以被过滤
    # 3)文件过滤语法
    
    """ 过滤文件内容
    文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
    /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
    
    eg:
    a.txt:项目中所有a.txt文件和文件夹都会被过滤
    /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
    /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
    *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
    空文件夹不会被提交,空包会被提交  空包下有__init__.py文件,是导包的初始化文件
    """
    注意:前台和后台的根目录下都会有一个.gitigenore过滤文件,把一些不需要上传到版本库中的文件及包过滤掉,过滤条件一定要在第一次提交版本库之前完成。后台要手动创建:
    # .gitignore文件内应该过滤的文件,比如以下:
    # 过滤条件一定要在第一次提交版本库之前完成
    # 各类编辑器产生的配置文件
    .idea
    .vscode
    *.suo
    *.ntvs*
    *.njsproj
    *.sln
    *.sw?
    
    # 日志文件
    .log
    *.logger
    
    # 本地测试文件
    scripts
    
    # 导包缓存文件
    *.pyc
    __pycache__
    
    

    后台项目提交到版本库

    后台项目提交到版本库两种方式:
    
    1.直接在Git Bash Here 进入到后台项目文件夹
    $ cd G:/Python代码日常/day1/day1_proj
    2.在改文件夹下初始化仓库
    $ git init  # 初始化完毕之后pycharm里所有的后台文件都变成红色了,因为此时所有文件都在工作区
    3.$ git add . 将所有文件提交到暂存区  # 此时pycharm所有文件变成绿色
    
    4.1(使用git命令行提交):
    git commit -m 
    4.2(直接在pycharm中提交):
    此时pycharm已经有了git环境,在项目的根目录文件夹右键,选择“git”-->“Commit Directory-->添加comments-->点击下方commit按钮”
    
    

    创建远程gitee仓库

    选择线上仓库

    1.注册码云账号并登录:https://gitee.com/
    2.创建仓库(课堂截图)
    3.本地与服务器仓库建立连接
    """
    """
    1)本地配置线上的账号与邮箱
    >: git config --global user.name "zhangchao"
    >: git config --global user.email "zhangchao@163.com"
    
    2)在本地初始化仓库(git init),并完成项目的初步搭建(项目架构)(一般都是项目负责人完成项目启动)
    # 这个过程就是git的基础部分的本地操作
    
    3)采用 https协议 或 ssh协议 与远程git仓库通信提交代码(一般都是项目负责人完成)
    	i) https协议方式,无需配置,但是每次提交都要验证管理员账号密码
    	>: git remote add origin https://gitee.com/zhangchao/liren.git  # 配置远程源
    	>: git push -u origin master  # 提交本地仓库到远程源
    	
    	ii) ssh协议,需要配置,配置完成之后就可以正常提交代码
    	>: git remote add origin git@gitee.com:zhangchao/liren.git  # 配置远程源
    	>: git push -u origin master  # 提交本地仓库到远程源
    	
    	iii)查看源及源链接信息
    	>: git remote
    	>: git remote -v
    	
    	iv)删除源链接
    	>: git remote remove 源名字 
    	
    注:origin远程源的源名,可以自定义;master是分支名,是默认的主分支
    
    

    克隆

    git clone [远程地址]
    '''
    执行以上命令的三个效果:
    	完整的把远程库下载到本地
    	创建origin远程地址别名
    	初始化本地库(所以我们不需要再手动去初始化)
    '''
    

    用本地仓库首次初始化远程仓库并提交代码

    本地仓库与远程仓库建立源连接
    前提:本地仓库已经创建且初始化完毕(代码已经提交到本地版本库)
    
    本机命令,添加远程源:git remote add origin ssh@*.git
    	采用ssh协议的remote源
    
    创建电脑的公钥私钥
    官网:https://gitee.com/help/articles/4181#article-header0
    
    本机命令,生成公钥:ssh-keygen -t rsa -C "*@*.com"
    	邮箱可以任意填写
    本机命令,查看公钥:cat ~/.ssh/id_rsa.pub
    
    码云线上添加公钥:项目仓库 => 管理 => 部署公钥管理 => 添加公钥 => 添加个人公钥
    

    在Git命令行中生成公匙:

    在GitHub上添加公匙:(记得将下图Allow write access勾选,不然对在创建的远程库只有读的权限,无法写入,就导致本地的代码无法添加到远程库中)

    提交本地代码到远程仓库
    命令:git push origin master
    

    remote源操作

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

    多分支开发

    分支操作
    """
    1.创建分支
    >: git branch 分支名
    
    2.查看分支
    >: git branch -v
    
    3.切换分支
    >: git checkout 分支名
    
    4.合并分支  
    第一步:切换到接受修改的分支(被合并,增加新内容)上
    eg:$ git checkout master
    第二步:执行merge命令
    >: git merge 分支名(修改文件的分支名)
    执行完这两部操作,在一个分支上修改文件,在另外一个分支上也能同步修改的内容
    5.创建并切换到分支
    >: git checkout -b 分支名
    
    6.删除分支
    >: git branch -d 分支名
    
    7.查看远程分支
    >: git branch -a
    """
    

    解决合并分支后产生的冲突

    2、冲突解决
    	1)当不同开发者协同开发,导致远程仓库与本地仓库的版本不一致,在pull远程仓库到本地仓库时,会出现版本冲突
    	2)两个仓库不同版本中,出现了相同文件的修改情况,会出现文件的冲突
    	3)同一文件的修改,代码有重叠,一定会产生代码冲突,打开冲突的文件,文件中会表示冲突的开始与结束,分割线上下分别是冲突的代码
    	>>>>>>>>>>header
    	===========
    	<<<<<<<<<<1321adsa21
            第一步:编辑文件,删除特殊符号
        	第二步:把文件修改到满意程度
        	第三步:git add [文件名]
        	第四步:git commit-m "注意信息"
        	注意:此时,commit一定不能带具体的文件名
    	4)冲突的解决没有固定的结果,但是要将冲突的标识删除,根据代码实际情况,线下沟通,整合代码即可
    

    线上分支合并

  • 相关阅读:
    js中的面向对象
    js 定时器
    js中 关于DOM的事件操作
    js 函数
    js流程控制;常用内置对象
    js数据类型基础
    js基础语法
    js初识
    css 选择器;盒模型
    软件系统建模之用例视图
  • 原文地址:https://www.cnblogs.com/zhangchaocoming/p/12209655.html
Copyright © 2011-2022 走看看