zoukankan      html  css  js  c++  java
  • 版本控制器git

    版本控制器git

    1 版本控制器的作用

    # 完成协同开发项目,帮助整合代码
    	<1>帮助开发者合并代码
        <2>提示合并冲突代码的开发者,降低了代码冲突的风险
    

    常见的版本控制软件有SVNGit

    SVNGit的区别:

    # SVN集中式管理
    # Git分布式管理(集群化,多分支)
    
    """
    Git的控制对象是开发的项目代码
    """
    

    代码开发的时间轴线如下:

    SVN 与Git的比较

    git的工作流程:

    版本库之间的通信

    git分支管理

    2 git命令的使用

    主要业务流程
    
    # 向工作区添加内容(红色)
    # 将工作区的内容添加到暂存区(绿色)
    git add 20200721.log
    git add .
    
    # 将暂存区的内容提交到版本库
    git commit -m '上传日志文件'
    

    2.1 git基础命令

    • 将已有的文件初始化为git仓库

    git init 文件夹名

    Administrator@WIN-2R42RCRNSQR MINGW64 /f
    $ git init control/
    Initialized empty Git repository in F:/control/.git/
    
    • 在某个路径下,初始化git仓库
    # 当前路径全被托管
    cd test
    git init
    
    • 创建全局用户
    $ git config --global user.name 'surpass'
    $ git config --global user.email '18395806407@163.com'
    
    • 在仓库目录终端下创建局部用户
    # 该用户只在该项目下生效
    $ git config user.name 'baicai'
    $ git config user.email '2804874530@qq.com'
    
    """
    注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
    注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户
    """
    
    • 查看仓库的状态
    git status
    git status -s # 查看状态的简约版
    

    工作区的操作:

    # 通过任何的方式完成文件的删与改
    # 空的文件夹不会被git记录
    
    典型:所以python项目中最好使用包,而不是文件夹
    
    • 将工作区的内容提交到暂存区
    git add test  # 将test文件夹中的内容提交到暂存区
    git add .     # 将当前目录下的所有文件提交到暂存区
    
    • 撤销工作区的操作(改,删)
    # 回退到当前最新提交版本的位置
     git checkout test
     git checkout .
    
    • 把暂存区的内容提交到版本库
    git commit -m '第一次提交'
    
    • 查看版本管理的日志
    $ git log
    commit 8b94060c62bf549a8c87284003df057891da8259 (HEAD -> master)
    Author: surpass <18395806407@163.com>
    Date:   Tue Jul 21 00:56:27 2020 +0800
    
    git reflog   # 查看的更多
    
    • 撤销暂存区的提交
    $ 撤销所有暂存区的提交
    git reset HEAD .
    
    $ 撤销某一文件的暂存区提交
    git reset 文件名
    
    $ 撤销所有暂存区的提交
    git reset .
    

    撤销版本库提交:commit的逆运算

    回滚暂存区已经提交到版本库的操作:

    查看时间点之前|之后的日志

    git log --after 2020-7-21
    git log --before 2020-7-21
    git reflog --after 2020-7-21
    git reflog --before 2020-7-21
    

    查看指定开发者的日志

     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 版本号 (重点)
    git reset --hard 35cb292
    

    2.2 过滤文件

    # .gitignore 文件
    # 1)在仓库根目录下创建该文件
    # 2)文件与文件夹均可以被过滤
    # 3)文件过滤语法
    
    """ 过滤文件内容
    文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
    /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
    
    eg:
    a.txt:项目中所有a.txt文件和文件夹都会被过滤
    /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
    /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
    *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
    空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
    """
    

    2.3 多分支开发

    创建分支

    git branch dev-818-2
    

    查看所有的分支

    git branch
    

    切换分支

    git checkout master  # 切回主分支
    

     切换并创建分支

    git checkout -b dev-baicai
    

    删除分支

    git branch -d dev-818
    

    查看远程分支

    git branch -a
    

    合并分支

    git merge dev-surpass
    

    注意:

    1)多个开发者都是在一个分支上进行开发,不出意外,该分支一定叫dev(协同开发)
    2)如果出现一个特殊任务(敏感任务),与正常业务关系不紧密,甚至可能大的影响正常的dev分支开发,可以依赖dev开一个子分支,进行开发,开发完毕后合并到dev分支,再删除该分支即可
    3)所有的开发任务都可以在dev分支上进行(除非公司硬性要求不能直接在dev分支开发,只能在dev子分支开发,测试通过后才能合并给dev)
    

    3 git远程连接仓库

    3.1 新建远程仓库的步骤

    # 新建一个本地仓库
    mkdir test
    # 进到tets文件夹中
    cd test
    # 初始化本地仓库
    git init
    # 建立与远程仓库的连接
    git remote add origin git@gitee.com:surpass_abc/luffyapi.git
    # 在工作区建立一个新文件
    echo '192.168.80.137' >> ip.txt
    # 将工作区的ip.txt发送到暂存区
    git add .
    # 将暂存区的内容提交到本地仓库
    git commit -m 'The first commit'
    # 将本地仓库的内容提交到远程仓库
    git push origin master:master
        
    # 已存在的仓库
    cd test
    git remote add origin git@gitee.com:surpass_abc/luffyapi.git
    git push origin master:master
    

    3.2 git远程操作的命令

    # 查看当前仓库下的所有远程路径
    git remote
    # 跟远程仓库建立连接
    git remote add origin https://gitee.com/surpass_abc/luffyapi.git (需要输入账号名以及密码)
    git remote add origin git@gitee.com:surpass_abc/luffyapi.git
    # 删除远程连接
    git remote remove origin
    # 从远程仓库拉取代码
    git pull origin master   # git pull 相当于 git fetch和git merge,会先从远程仓库拉取代码合并到当前本地的分支,git fecth不会做添加合并的操作
    # 将代码从本地提交到远程仓库
    git push origin master
    # 克隆远程仓库的代码到本地
    git clone git@gitee.com:baicaijc/luffyapi.git
    
    """
    1)通过克隆方式连接远程源,默认远程源名就叫origin;所以主动添加远程源来连接远程仓库,源码也用origin
    2)本地一个仓库只需要和远程一个源进行同步,所以只需要连接一个远程源,如果还想把本地代码同步给第三个平台,那么可以通过主动添加远程源来连接第三个平台的远程仓库,此时的源码就不能再叫origin了,比如online都可以
    3)pull和push都可以提供选择不同的源码,和不同的远程仓库交互
    """
    

    3.3 采取ssh协议连接远程仓库

    # 本地电脑生成公私钥
    cd C:UsersAdministrator.ssh
    ssh-keygen -t rsa -C "*@*.com"
    # 查看公钥
    cat ~/.ssh/id_rsa.pub
    # 在码云或者github上添加公钥
    项目仓库 => 管理 => 部署公钥管理 => 添加公钥 => 添加个人公钥
    

    3.4 协同开发

    如何成为其他码云项目的贡献者

    # 将自己的码云账号名称共享给别人
    # 克隆别人的项目,然后进行协同开发
    
    """
    仓库成员管理,添加开发者
    """
    

    如何成为自建git服务器的开发者

    # 生成自己电脑的公钥,将其提交给项目的管理者
    # 加入开发者,然后克隆项目
    

    注意:要先拉下代码在push

    冲突的产生原因:

    # 两个人同时改了相同的而一部分代码,提交后
    # 合并分支
    

    冲突的解决方法

    """
    1)在远程仓库和本地仓库版本不一致时,拉取远程仓库版本到本地时,两个版本进入融合,可能会出现版本冲突
    
    2)定位冲突文件冲突代码,线下沟通冲突代码,整合代码解决冲突
    
    3)将解决冲突后的代码重新提交到本地版本库
    
    4)再拉去远程仓库,直到没有冲突,提交本地版本库到远程
    """
    

    4 pycharm操作git

    • 将文件从工作区提交到暂存区

    • 将文件由暂存区提交到本地版本库

    • 将本地库的代码提交到远程库

    • 远程仓库拉取代码

    • 增加一个branch

    image-20200721211640483

    • 切换分支branch

    • 本地代码与版本库之间的比较

    • git clone远程仓库代码到本地

    ![image-20200721212704638](C:UsersAdministratorDesktopgit命令的使用.assets!

    )

    5 线上分支的合并

    # 如果看到可以合并,表示不会有冲突,可以放心的合并
    # 如果不可以合并,则需要线下手动的合并,修改相应的冲突
    

    6 线下分支的合并

    在实际项目开发中,一般而言,都是先进行线下的合并,把本地仓库的dev分支合并到本地的master分支,合并成功后,在提交到远程仓库。合并分支遇到冲突的解决步骤:

    # master分支上
    # 修改合并出现飘红的地方,协同沟通后修改冲突的地方
    # git add .
    # git commit -m '分支冲突问题解决'
    # git push origin master
    
    # 切换分支
    git checkout master
    # 合并分支
    git merge dev-bug
    

    7 线上回滚代码

    # 切换回dev 分支
    git checkout dev
    # 回退到指定的版本
    git reset --hard 版本号
    # 强行提交代码到远程库
    git push origin -f
    

    如果出现的错误:

    Your local changes to the following files would be overwritten by checkout
    
    """
    1. 将当前未跟踪的文件提交到暂存区, 在提交到版本库管理
        git add.
        git commit -m "commit message"
    2. 清除缓存
        git add .
        git stash 
        //取出的时候使用 
        git stash pop
    """
    

    8 git的变基

    git rebase
    
  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/surpass123/p/13358099.html
Copyright © 2011-2022 走看看