• git命令行入门


    (1)git要完成的功能
        提供一种方式,完成多人访问情况下对文件的版本进行管理。可分布式、可离线、可在线使用。
        具体功能:版本库文件的提交、下拉、删除、比对,上传到云端库等。

    (2)git的日常操作

        git客户端安装
          参照https://blog.csdn.net/bird3014/article/details/72355648完成,此处不再赘述

        (a)找一个存放工程的文件夹,打开git控制台,执行git init初始化git的repository
          执行命令:git init

        (b)执行git clone、git remote add,从git云端库下拉版本库中的文件并配置云端仓库
          执行命令:
            git clone 云仓库地址,例如:http://xxxx@192.168.1.5:8080/r/GZProject.git
            git remote add origin 云仓库地址,例如:http://xxxx@192.168.1.5:8080/r/GZProject.git

          备注:
          (1) 这里是两条语句
            第一条是从云仓库克隆,也可以直接从云仓库下
            第二条是添加一个云端仓库指向,别名为origin,仓库地址为http://xxxx@192.168.1.5:8080/r/GZProject.git
          (2) git clone的参数内容从git仓库处复制

        (c)编写gitignore文件
          具体规则可参照git官方文档或者https://www.cnblogs.com/jingtyu/p/6831772.html完成。

        (d)git add 提交文件到stage缓存区
          执行命令:git add ./*

          这里添加的是当前的所有文件,可以一个个添加,也可以git add完再用git rm 去删

        (e)git pull 从远端仓库拉取有变更的文件并合并到工作区
          执行命令:git pull http://xxxx@192.168.1.5:8080/r/GZProject.git master
        

        (f)git diff 比对差异(默认比对工作区与stage)

        (g)合并所有冲突

        (h)git commit提交到本地仓库
          执行命令:git commit -m '一段对当前版本说明的文字'

        (i)git push 提交到云端仓库
          执行命令:git push origin master
          将向origin仓库推送本地master分支

    (3)git的基本概念
        (a)git三大存储区:repository、stage、workspace

          Repository:仓库,此处指的是本地仓库。即相当于本地正式库。在离线的情况下,使用者可以通过本地仓库保存当前有效的文件变化。

          Stage:暂存区,也有人叫Index区。是用于暂存当前修改的类似于临时保存的区域。比如:当前要执行一个比较大批量的合并操作,合并完成之前,就需要有一个副本时常与当前版本进行比较,而stage,就是离线情况下专门用来干这个的。

          Workspance:工作区,就是git init执行时所在的文件夹,是工程存储的、在磁盘上可见的文件夹的内容。



        (b)HEAD文件指针
          HEAD指针是指向当前最新版本的文件指针(并非一定是本地仓库)。例如:git reset命令会导致其移动至stage区。


    二、更多强大功能
      (1)git log 查看本地仓库提交日志查询
        执行命令:git log
        这个命令可以用于查找git仓库当前提交的版本,配合git reset命令可以用于回滚本地仓库的提交。

      (2)git reset 操作HEAD指针(版本回退)
        执行命令:git reset HEAD或者git reset HEAD --mixed
        当前stage区内容会被HEAD指向的本地仓库中的文件版本覆盖

        执行命令:git reset HEAD~2 --hard
        当前stage区、工作区内容会被HEAD指向的本地仓库中的文件版本的往回数两个版本覆盖。

        执行命令:git reset HEAD~ --soft
        本地仓库中HEAD指针往前移动一个版本,相当于撤销一次git commit操作

      (3)git status 查看当前文件情况,常用于合并操作
        查看当前工作区和暂存区的状态,即:哪些内容被提交到缓存区了,哪些没有,差异性什么的。

        执行命令:git checkout ./
        当前目录下(./)的所有内容将以stage区的内容进行覆盖

      (4)git fsck --lost-found找回git add过但已经不存在的文件

      (5)git rm 删除文件
        执行命令:git rm ./
        在git中删除以提交的文件(只是删除工作区和stage区的文件,要删除仓库里的,要提交才行)

      (6)创建与切换分支
        执行命令:git branch feature
        以当前本地仓库中HEAD指针指向的版本创建一个名为feature的版本分支。

        执行命令:git log –decorate
        查看当前版本与分支以及标签情况

        执行命令:Git checkout feature
        本地仓库中的HEAD指针指向名为feature的版本分支,并将HEAD指向的内容还原到工作区。

        执行命令:git log –oneline –decorate –graph –all
        图形化显示分支情况、版本迭代情况

      (7)合并与删除分支
        执行命令:git merge feature
        将feature分支合并到当前HEAD指向的分支(不知道自己当前在哪个分支的,可以使用git log命令查看)

        执行命令:git status
        查看冲突文件,用编辑器或其他编辑工具修改、合并冲突。

        执行命令:git add
        将合并完的内容提交到stage区(此处为简写,有多少改多少,改多少提交多少)

        执行命令:git commit
        将stage区的内容提交到本地仓库

        处理完所有冲突,再次执行git merge,分支就会被合并到master里了,但feature不会被删除

        执行命令:git branch –delete feature
        删除git 分支feature

      (8)匿名分支与git checkout命令
        git branch:查看本地分支
        git branch –r :查看云仓库分支

        git checkout 分支名:将当前工作区内容检出为分支指向分支版本(会直接丢弃当前工作区文件,文件指针也会跟着移动)。
        git checkout :创建一个匿名分支,可以用于实验。若发现实验需要保存,可以用git branch –b 重新指定名称

      (9)git checkout与git reset的区别:
        (a)当操作对象是一个文件时,git reset只能将指定文件覆盖stage区域(若用—文件名指定文件,则不能使用—mix以外的选项)。而git checkout是一定会将文件覆盖stage区和工作目录的。
        (b)当操作对象是一个版本快照时,git reset –hard会直接覆盖掉工作目录和stage区,比较危险。用git checkout ,如果当前工作区有什么没有提交到stage,即git status还有东西返回,checkout就会失败,一定要你提交完内容再checkout
        (c)git reset用于重置分支,相当于将当前HEAD指向的文件快照直接修改,即是:如果当前指向feature分支,执行git reset master –hard,那么feature分支内容将直接变成master分支的内容,同时文件指针也会指过去,相当于丢弃了一个快照。而checkout只是将HEAD指针指过去,feature分支该咋样还是咋样,只是HEAD指向master了而已。

  • 相关阅读:
    Extjs4.0中清空filefield已选文件
    .net操作读取word中的图像并保存
    WebForm_PostBackOptions未定义 错误排查
    数据库关键字
    VS2008生成WebSite和WebApplication的区别(转载)
    安装天乙论坛(SSH架构的开源项目)时遇到的问题
    Hibernate与Oracle char类型的列之间的兼容问题
    关于spring3使用AOP编程时需要引入哪些jar包的问题
    让IE支持HTML5的Canvas
    IIS + TOMCAT 注意事项
  • 原文地址:https://www.cnblogs.com/chendeming/p/9033843.html
Copyright © 2020-2023  润新知