git版本控制工具

本文介绍git版本控制工具

  1. 基本概念

    1.三种状态
        已提交
        已修改
        已暂存
    2.三个工作区
        Git仓库
            Git用来保存版本数据的地方
        工作目录
            编辑项目的地方
        暂存区域
            保存需要提交的文件信息
  2. 安装

    我们使用git命令来操作git,需要安装git软件
    下载地址 http://git-scm.com/download/win
    或者下载github,功能更强大 http://windows.github.com 
  3. 配置命令

    打开git命令窗口,配置用户名和邮箱
    git config --global user.name "yourname"
    git config --global user.email 2640199637@qq.com
    查看配置的信息
    git config --list
    git config user.name
  4. 基础

    1.创建仓库
        使用 git init 初始化git仓库
        在你的项目目录中添加一个文件demo.js
        输入 git add demo.js 添加文件
        然后 git status 查看工作区状态
        最后 git commit -m '我是注释' 提交文件到git仓库中
        再次 git status 查看工作区状态
        // 如果你要从已经存在的git项目copy下来,类似于svn的checkout
        git clone https://github.com/libgit2/libgit2 copy下来的项目就在libgit2目录下面
        git clone https://github.com/libgit2/libgit2 mylibgit 给项目指定自己的名字
    2.提交更新文件
        使用git status 查看工作区文件的状态
            modified 表示文件修改了
            Untracked files 表示有文件没有受git管理,也就是新增的文件
        上面这些情况可以使用git add filename 的形式添加文件到git中,这条命令是万能的
            再次运行 git status 
            Changes to be committed 表示文件已经被提交到暂存区了
        使用git status信息比较多,可以使用git status -s 或者 git status --short命令
            A 表示暂存区中有文件
            M 表示文件被修改了
            ?? 表示文件新增,没有受git管理
    3.忽略文件
        开发项目中像node_modules这类的文件无需受到git管理,可以忽略这些类似的文件
        首先在项目根目录中创建.gitignore文件
            下面是我在git中写的关于gitignore所有知识
                # 这时gitignore的注释
                # git使用标准的glob模式匹配,类似于正则表达式
                # 使用 / 开头,防止递归搜索,也就是唯一指定
                # 使用 / 结尾,表示指定目录,忽略目录所需
                # 要忽略指定模式以外的文件和目录,取反即可,使用 !
                # 什么是glob模式
                # glob模式是简化的正则表达式
                # *号表示匹配0或者多个字符
                # [abc]中括号表示匹配任意一个括号内部的字符,[0-9]
                # ?号表示只匹配任意一个字符 
                # **号表示匹配任意多个中间目录,"a/**/c",这个" a/*/c "表示任意一个目录
                .gitignore
                node_modules/
            使用cat命令可以输出文件内容
                cat .gitignore
    4.查看具体的文件做了哪些修改
        当你的文件中做了修改但是还没有add,可以通过 git diff 命令比较文件和暂存区中的文件做了哪些具体的修改
        当你的文件中做了修改但是已经add了,可以通过 git diff --staged 命令比较暂存区中的文件和git仓库中的文件做了哪些具体的修改
        神器: 
            使用 git difftool --tool-help 查看你的系统支持哪些图形化工具
            使用 git difftool 命令可以对你的文件做图形化展示对比,需要安装一个图形化插件,git会有提示,告诉你是否安装
            进入 vimdiff 之后,可以查看具体的变化,使用 ctrl + z 退出界面
    5.代码提交
        使用 git commit -m '提交说明' 提交暂存区的文件
        git commit -a -m '提交说明' 这种提交不需要经过add
    6.删除文件
        删除文件的操作可以使用add操作直接完成,也可以使用如下方法
        1.清除文件,工作区和git仓库都删掉
            git rm '你删除的文件名' 这样就将删除的文件做了标记,然后再commit代码,就ok了
            注意如果在删除之前,已经把文件add到暂存区了但是没有commit,这时就要用git rm -f '你删除的文件名' 强制删除文件,这时一种保护机制
        2.清除文件,工作区保留,git仓库干掉
            git rm --cached '你的文件名称' 这样就可以把暂存区中的文件删除,然后提交即可
        3.清除文件夹
            git rm -r demo/ 直接删除demo文件夹下面所有的文件和文件夹
            git rm命令后面可以跟其他的glob模式命令
    7.文件改名
        git mv demo.txt rename.txt 这句命令搞定
    8.查看提交历史
        git log 命令可以查看git仓库中所有的提交版本信息
        git log -p -2 显示最近两次提交的内容差异
        git log -stat 查看每次提交的简要统计信息
        --pretty用来展示不同的提交历史的格式,有如下子选项
            git log --pretty=online 每次提交历史放在一行展示
            git log --pretty=short 缩略信息
            git log --pretty=full 比较全的信息
            git log --pretty=fuller 很全的信息
            format可以用来指定自定义的信息展示格式
                git log --pretty=format:"%h - %an, %ar : %s"
                后面的配置选项有很多,感兴趣自己去查吧
            另外oneline和format可以再结合--graph,展示分支,合并的信息
                git log --pretty=oneline --graph
        还有一部分没有介绍,是关于限制信息输出的内容,可能用处不大
    9.撤销操作
        1.修改版本注释信息或者添加提交文件
            git仓库中的每一个版本都是一个系统的项目,如果你有的文件忘记提交了,又不想重新发布一个版本的话,可以使用 git commit --amend '注释' 这样的方式来合并已提交的版本
        2.如果你的文件你提交到暂存区了,现在想让他回到工作区中
            使用 git add * 可以将工作区中所有的文件提交到暂存区中
            使用 git reset HEAD '你的文件名' 这条命令,回到工作区的状态
        3.如果你修改的文件你不想要了,你想回到最开始的状态
            使用 git checkout -- '你的文件名' 这条命令,相当于从git仓库的最新版本中copy出文件
    10.远程仓库的使用 
        如果你的项目是从远程第三方服务器上pull下来的那么可以直接使用 remote 命令,查看当前的连接仓库的名称,使用 git remote -v 可以查看更为详细的信息,这里的第三方服务器我用的码云
        一般的工作流程
            使用 git clone 命令克隆远程仓库,然后使用 git pull 命令,可以从远程仓库上抓取最新的数据合并到本地当前分支,使用 git push 命令,可以将你自己的代码推送到远程服务器上
            git clone url
            git remote // 默认你的仓库名称是origin
            git pull origin master
            git push origin master
        删除远程仓库,使用 git remote rm origin
        重命名远程仓库,使用 git remote rename pb paul 将pb换成paul
    // 到这里,你已经可以完整的使用git开发项目了,如果想继续深入,可以接着往下学
  5. git分支

    git分支其实很简单,git分支其实和master是一回事,打个简单的比方,git仓库是历史的长河,master就是现在的你,而分支是另外一个你,你现在处于master上面,你正在这个历史中生活了10年,但是你的分支没有变化,你没有去动它,它就不变,还是10年之前的时间点,如果你切换到分支上面,就相当于时间倒流了10年,如果你在这个分支上生活了20年,那么此时你再切换到master上面,你又相当于时光倒流10年,明白了吧,这就是分支,注意上面讲到的一个历史长河,也就是说不管分支多少永远都指的是一个git仓库
    创建分支的命令 git branch testing 创建一个名为testing的分支
    查看当前的分支状态 git log --oneline --decorate
    分支切换 git checkout testing 
    查看分支之前的编辑修改信息 git log --oneline --decorate --graph --all
    创建分支和切换到分支上面的命令简写 git checkout -b testing
    ----------------
    下面我来介绍git分支合并和冲突的解决
    1.如果创建分支之后,主分支没有做任何修改
        这种情况下,合并分支非常简单
        首先切回到主分支上 git checkout master
        然后 git merge testing 
        这样 git当前主分支的时间点和testing分支一样了
        现在testing分支已经没用了可以直接删除,git branch -d testing
    2.如果分支创建之后,分支做了修改,主分支被其他人做了修改,这时合并方法如下
        这种情况下操作和上面是一样的
        git checkout master
        git merge testing 
        git brach -d testing
        但是你要知道,git默默的将分支和主分支的最新的代码合并了,并且这个合并可能出现冲突
        如果出现冲突了,git合并操作会暂停,等待你解决冲突,使用git status可以查看哪些文件有冲突,手动找到这些文件,然后做出修改,将修改后的文件使用 git add 的命令暂存起来,就可以告诉git冲突已经解决,然后再操作上面命令即可,关于冲突解决还有图形化工具,在这里不再赘述
    ----------------
    下面介绍git的分支管理工具
    使用 git branch 命令可以查看所有的分支,和当前是哪个分支
    使用 git branch -v 可以查看每一个分支的最后一次提交
    使用 git branch --merged 可以查看已经合并但是没有删除的分支
        使用 git branch -d testing 可以删除已经合并的分支
    使用 git branch --no-merged 可以查看没有合并的分支
        使用 git branch -D testing 可以强制删除没有合并的分支
  6. 使用公钥

    ssh-keygen -t rsa生成私钥和公钥,公钥用来放在第三方git库中
    放好了之后,自己和别人都可以对代码进行修改和下载,使用git地址,并且免去了验证

转载于:https://www.cnblogs.com/ye-hcj/p/7406861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值