zoukankan      html  css  js  c++  java
  • Git笔记

    Git使用说明

    git官网:https://git-scm.com/

    GitHub:https://github.com/

    码云:https://gitee.com/

     

    模块主要分为:基础,常用操作,分支、回退、常见错误。

    一:基础

    1.Git 和 SVN的主要区别

    • Git是分布式管理,SVN是集中式管理,
    • Git支持离线操作,SVN仅支持联网操作Clipboard Image.png

    2.Git的基本操作

    为了更好的描述和传达,阅读前需要进行一些概念的统一

    • repository(仓库):git中有两种repository,一个是remote(线上),还有一个是local(本地)。都是存储project的所有的内容。
    • branch(分支):一个project的镜像。

    3.初次使用:

    //一个完整的步骤如下:

      step1:初始化账号姓名

      git   config   --global user.name "XXX"
      git   config   --global user.email XXX@163.com
      git   config   --list  //查看配置信息

    step2:上传文件

      cd   /d/workspace      //选择目录,进入到d盘workspace下面
      git   init                       //初始化操作,会在/d/workspace目录下,生成.git文件夹
      git   remote  add  origin  url     //搭桥,与远程服务器建立连接
      git   pull  origin  master           //从远程master分支pull代码
      git   add  test.txt                      //添加文件
      git   commit  -m  "第一次提交"        //commit时候的提示信息
      git   push  origin  master:master     //把暂存区的变换提交到服务端的master分支

    step3:同步

      git pull origin master  //从远程的master分支同步数据
      //用于取回远程主机某个分支的更新,再与本地的指定分支合并,类似于svn的update操作
     

    二:常用操作

    1.push操作:

      git   push   origin   本地分支名          //把本地分支(本地checkout的分支)push到远程同名分支,如果远程分支没有就创建同名分支; //与我当前在那个分支没有关系
      git   push   origin   本地分支名:远程分支名     //将指定本地分支push到远程分支;  //与我当前在那个分支没有关系   
      eg:把本地分支test提交到远程仓库master
      git push origin test:master  //与此时在哪个分支没有关系,可以是当前的分支,也可是别的的分支。
            
    push操作可能不成功,此时可以强制push:  
      原因:可能是因为远程、本地的文件不匹配导致的,强制push会覆盖远程的文件
      git push -f origin master //强制push到远程   参数-f:表示强制推送到远程。 

     

     2.pull操作

      git pull origin 远程分支名          //把远程分支pull到当前分支(本地checkout的分支)
      git pull origin 远程分支名:本地分支名      //把远程分支pull到指定本地分支
     补充:  
      指定了本地分支名,则将远程分支的数据同步到制定的本地分支;若没有指定则是同步到当前分支。如果指定的是不存在的分支,则会创建该分支。
     
     
    git fetch和git pull的区别:
        git fetch:从远程获取最新版本到本地,不会自动merge
        git pull:从远程获取最新版本并merge到本地,pull=fetch+merge
        
        注:本地看不到远程的分支,使用git fetch,则可以看到了。
    

      

      

    3. 远程仓库

      git remote -v  //查看远程分支的仓库
      git remote rm origin  //删除远程仓库
      git remote add origin url  //添加远程仓库

     

    4.  撤销add的到缓存区的文件

    git clean -f  //清除没add的文件、文件夹
    
    git rm --cached fileName:撤销add到缓存区中的文件
    如需撤销文件夹加上-r:git rm -r --cached fileName
     
    git diff 文件名:查看修改了那些内容
    git checkout 文件名:强制回退到修改之前的内容
    

       

    5.状态查询:git status

     

    6.查看日志:

    git log  //默认查看当前分支的日志信息;  会按提交时间列出所有的更新,最近的更新排在最上面
    git log -3  //查看最近3次的提交日志信息
    git log bug_188  -3   //查看具体某一个分支的日志信息
    git log --pretty=oneline -3   //显示最近3条日志,并按行信息日志信息

     

    7.修改内容对比:

      git diff 文件名:查看修改了那些内容 

      git比较两个文件,修改与本地比较,查看文件修改了哪些内容

      git diff branch1 branch2 --stat   

      显示出所有有差异的文件列表

      git diff branch1 branch2 文件名(带路径)   

      显示指定文件的详细差异

      git diff branch1 branch2                   

      显示出所有有差异的文件的详细差异

    8.commit提交信息

    查看commit的id 对应修改了哪些文件:git show commit的id --stat
    查看某次commit修改的内容: git show commit的id 
    

      

    修改commit的提交信息  

    (1)修改最后一个commit的信息:

      git commit --amend

      如果提示编辑器不存在设置全局配置git的编辑器

      git config --global core.editor vim

    在弹出的编辑框中进行修改,之后保存退出

    (2)修改之前commit的信息:

    git rebase --interactive commit的id

    该命令会列出当前commit的id之后提交的commit信息列表

    弹出编辑页面,把commit的id前的 pick 改成 r 保存,会弹出修改commit信息的页面

     

    9.查看标签

      git tag -l

     

    三:分支

    1.本地分支:

        git branch local_branch : 创建本地分支
        git branch -d local_branch:删除本地分支  //使用大写的D 强制删除  git branch -D XXX
        git branch -m old_branch new_branch:重命名本地分支

    2.远程分支:

      git push origin dev:dev:创建远程分支。//将本地分支push到远程分支,如果远程分支不存在,则创建远程分支
      git push origin --delete <branchName> 删除远程分支
      删除与远程分支的关系:  git remote rm origin  //删除远程仓库,之后可以重新git remote add origin url,重新建立远程关系

    3.查看分支:

             git branch -a:查看远程和本地的分支,绿色代表的是当前的(本地)分支
            git branch:查看本地的分支,当前分支前面会标一个*号。
            git branch -r:查看远程的分支
            git remote show origin 查看远程分支

    4.git checkout命令:

      检出,是我们最常用的命令。最常见的场景:创建分支,切换分支。 

             git checkout test:从当前分支切"换到"test"分支
            git checkout -b test:创建test分支,并从当前分支切"换到"test"分支;如果test分支已经存在了,则会报错
            git checkout -b test666 master:从master分支"切出/创建"一个test666分支,test666这个分支是master分支的孩子
            git checkout -- readme.txt:
          强制回退到修改之前的内容 
          readme.txt文件在工作区的修改全部撤销,这里有两种情况,add之前和add之后:让这个文件回到最近一次git commit或git add时的状态

    5.分支合并

    合并某分支到当前分支:git merge <name>
    新建dev分支,在该分支下创建文件,进行操作。操作完成后,在dev分支下进行commit提交,此时master看不到dev分支下的文件了。所以我们需要将dev分支的内容合并到master上面。
    此时我们可以git checkout到master分支,把dev分支的工作成果合并到master分支上。此时master分支就可以看到dev分支提交的文件了。

     

    管理员:
        别人将代码提交到远程的dev分支,管理员会pull到本地,确保没问题,再合并到本地的master,最后push到远程的master分支。

     

     

     

    四.clone克隆

      git clone url:该命令将remote repository下载到local
         默认克隆远程master分支的数据,并且默认克隆到当前目录下(pwd命令的结果)
     
      完整的例子:
        git clone -b 远程分支名 url 本地目录    //克隆指定分支的数据,到指定的目录下 
        git clone -b master http://gitee.com/a/b.git  /d/workspace
     
      补充:首次使用需要输入账密:
          输入你注册的账户名(或者邮箱)和密码即可
     

    五:回退reset

    步骤:
      git log 查看当前分支的提交信息,此时我们可以找到需要回退的commitId
      git reset --hard 3628164 //版本号没必要写全,前几位就可以了,Git会自动去找
     
    疑惑:
     
     
     

    reset三种类型:

      1.git reset  --mixed commit的id  
        还原到commit的id,(git reset 默认是mixed )此commit之后的文件变成modified红色(即还没add的状态)
      2.git reset  --soft commit的id 
        还原到commit的id,此commit之后的文件变成modified绿色(即add(勾选中)的状态)
      3.git reset --hard commit的id 
        还原到commit的id,此commit之后的文件都被还原
    

      

    注:还原的时候,应该提前一个commitId:

     
     
     
  • 相关阅读:
    逻辑回归与最大熵模型
    提升方法-AdaBoost
    Python中的类属性、实例属性与类方法、静态方法
    mysqldump详解
    12.python 模块使用,面向对象介绍
    11 python 内置函数
    10.函数的变量与返回值
    9. 函数的定义和参数,默认参数
    linux下iptables详解
    把linux下的yum源更换为阿里云的国内源
  • 原文地址:https://www.cnblogs.com/quan-coder/p/8059007.html
Copyright © 2011-2022 走看看