zoukankan      html  css  js  c++  java
  • git相关

    1. git是什么呢?

    1. git是一个分布式版本控制软件.
    2. 什么是版本控制呢?
        * 简单来说就是在项目的不同版本之间的切换.
    

    2. git的作用是什么?

    版本控制   团队协作
    

    3. git的优势?

    同类型的版本控制软件: svn   cvs
    
    git的优势: git是分布式的
    

    4. git的安装

    1. windows下的安装:
    
    从git官网(https://git-scm.com/)上下载,直接默认安装就好.
    
    git的相关命令:
    1. git --version : git的版本
    2. linux上安装
        1. yum install git
        2. 使用git --version 命令查看是否安装成功
        3. 上面安装的版本会过于老旧.
        4. 从 https://mirrors.edge.kernel.org/pub/software/scm/git/ 上下载tar.gz,上传到linux,进行解压tar -zxvf 下载的压缩包
        5. 安装git依赖:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 和 yum install  gcc perl-ExtUtils-MakeMaker
        6. 移除已经安装的git: yum remove git
        7. 进入到git解压目录
        8. 预编译git: ./configure --prefix=/usr/local/git_2.9.5
        9. 编译并安装git: make && make install
        10. 将git的脚本软连接到/usr/bin/ 目录下: ln -s /usr/local/git_2.9.5/bin/* /usr/bin/
        11. 安装成功
    

    5. git的入门级命令

    1. 工作区 : 代码区
    2. 暂存区 : 代码更改的暂时存储的地方
    3. 本地仓库 : .git文件夹就是本地仓库
    4. 远程仓库 : 网络上的其他地方(github等等)
    5. 本地操作命令
        1. 直接 git : 调用帮助文档(git --help)
        2. git + 命令 --help : 查看某个具体命令的帮助文档
        3. git --version : 查看git的版本
        4. git init : 生成空的本地仓库(在项目的根路径下执行)
        5. git add 文件 : 将文件添加到暂存区
        6. git commit -m "注释说明" : 将暂存区提交到本地仓库(引号里面可以随便写)
            1. git commit在第一次使用之前,需要配置用户邮箱及用户名,使用下面的命令:
            2. git config --global user.email "you@example.com"
            3. git config --global user.name "Your Name"
    

    6. 远程操作命令(前提是得有远程仓库)

    1. git remote : 用于管理远程仓库
    2. git push -u origin master : 往名字为origin的仓库的master分支上提交变更(初次使用需要进行登录),这个一般会在创建仓库的时候有提示.第一次之后就可以使用git push进行推送
    3. git fetch : 拉取远程仓库的变更到本地仓库
    4. git merge origin/master : 将远程的变更,合并到本地仓库的master分支
    5. git pull :  -- 不建议使用  等同于fetch之后merge
    

    7. git的文件状态(git status可以查看git的状态)

    1. 相关命令:
        1. git status可以查看git的状态
        2. git rm: 用于git文件的删除操作
            1. 如果只是 git rm --cache 仅删除暂存区里的文件
            2.如果不加--cache 会删除工作区里的文件 并提交到暂存区
        3. git checkout
            1. 直接加文件名   从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
            2.加了【分支名】 +文件名  则表示从分支名为所写的分支名中拉取文件, 并覆盖工作区里的文件
    2. 相关状态及切换
        1. 新建文件 --> Untracked
        2. Untracked/modified使用add命令将新建的文件加入到暂存区-->Staged
        3. Staged使用commit命令将暂存区的文件提交到本地仓库--> Unmodified 
        4. 如果对Unmodified状态的文件进行修改-->modified
        5.  如果对Unmodified状态的文件进行remove操作-->Untracked
    

    8. git的图形化客户端:

    1. 官网下载Sourcetree,进行安装.
    2. 绕过登录:
        1. 进入C:UsersAdministratorAppDataLocalAtlassianSourceTree目录.
        2. 新建accounts.json
        3. 复制下面内容(复制完成点击安装,之后会提示未安装,选择第一个就好):
                [
            	  {
            	    "$id": "1",
            	    "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
            	    "Authenticate": true,
            	    "HostInstance": {
            	      "$id": "2",
            	      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
            	      "Host": {
            	        "$id": "3",
            	        "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
            	        "Id": "atlassian account"
            	      },
            	      "BaseUrl": "https://id.atlassian.com/"
            	    },
            	    "Credentials": {
            	      "$id": "4",
            	      "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
            	      "Username": "",
            	      "Email": null
            	    },
            	    "IsDefault": false
            	  }
            	]
        4. 选择本地仓库,然后暂存所有文件,进行提交,最后进行推送到github就可以了.
       	
    

    9. git分支:

    1. 什么是分支: 软件项目中启动一套单独的开发线的方法
    2. 为什么使用git:  
        1. 可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响. 
        2. 封装一个开发阶段.
        3. 解决Bug的时候新建分支,用于对bug的研究.
    3. git与分支相关的命令
        1. git branch 分支名 : 创建一个分支.
        2. git branch : 查看分支,列出所有分支,分支前面有*号代表该分支为当前所在分支.
        3. 创建分支的时候,分支名不要使用特殊符号.
        4. git branch -d 分支名: 删除分支(但是不允许删除当前所在的分支)
        5. git branch -m 旧分支名 新分支名: 修改分支
        6. 提交操作:
            1. git add *
            2. git commit -m "test"
            3. git status
            4. 没有提交的单独提交一次
        7. 切换分支: git checkout 分支名(如果在分支上面对文件进行修改之后, 没有commit就切换到另外一个分支b,这个时候会报错,因为没有commit的文件在切换分支之后会不覆盖。所以Git 报错提示。)
        8.  git checkout -f 分支名: 强制切换到分支,如果当前有为提交的变更,会直接丢弃, -f 参数一定一定要非常非常小心使用,一般情况下不建议使用,除非真的要强制去执行 
    

    10. git的log:

    1. log命令的作用: 用于查看git的提交历史
    2. git log命令显示的信息的具体含义
        * commit 4a70ceb24b6849ad830d6af5126c9227b333d2d1 --SHA-1 校验和  commit id
        * Author: wiggin <wiggin@gmail.com>  --作者跟邮箱概要信息
        * Date:   Wed May 16 23:51:02 2018 +0800 --提交时间
    3. v2  --commit的时候,使用-m选项说写一段概要说明,日常在使用commit的时候,-m选项所写得内容一定不能随便写,“修改了登陆的bug”/“新增用户管理中心”
    4. git log -数字  表示查看最近几次的提交
    5. git log -p -2 显示最近两次提交的不同点
    6. git log --author 查看具体某个作者的提交 
    7. git log --online 输出简要的信息
    8. git log --graph 以一个简单的线串联起整个提交历史
    9. git log 输出信息的定制
    

    11. git的diff命令:

    1. 使用场景: 用来解决冲突,制作补丁
    2. git diff 不加任何参数, 用于比较当前工作区跟暂存区的差异
    3. git diff --cached 或者--staged: 暂存区与分支的差异查看
    4. git diff HEAD: 工作区与分支的差异查看
    5. git diff 分支名  查看当前分支跟指定的分支的差异
    6. git diff 分支名1 分支名2 查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
    7. git diff 文件名 查看指定文件的差异(工作区与暂存区)
    8. git diff commitid1 commitid2:  用于列出两个历史提交的差异(commitid1可以从git log命令获取到)
    9. git diff --stat 用于罗列有变更的文件
    10. 内容的解析:
        
    
        diff --git a/file2 b/file2  file2的两个版本
        index c200906..29e2b3c 100644
        --- a/file2 表示变更前的文件
        +++ b/file2 表示当前文件
        @@ -1 +1,2 @@  变更前的文件的第一行  变更之后的文件的第一行往下两行 这块文件区域有差异
         222
        +111    +表示新增了一行 -表示删除了一行  如果对一行内容进行修改,在此处体现出来的就是先删除一行,再新增一行
        
        
        diff --git a/file2 b/file2
        index 29e2b3c..2e2f5e4 100644
        --- a/file2
        +++ b/file2
        @@ -1,2 +1,3 @@ 变更前第一行到第二行,变更后是第一行到第三行
         222
        +333
         111
         
    

    12. 更改提交:

     1. 将不必要的文件add
     2. 上次提交觉得是错的
     3. 不想改变暂存区内容,只是想调整提交的信息
     4. 版本回滚
     5. 命令
        * git reset HEAD 文件名: 移除不必要的添加到暂存区的文件
        *  git reset HEAD^ 或者 commitid:  去掉上一次的提交 
        *  git reset --soft  HEAD^:  修改上次提交的信息吧即commit -m "修改这里的内容",撤回上次提交,文件保存到暂存区
        
        *  git reset --soft:  只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
        *  git reset --mixed:  (默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
        * git reset --hard:  将HEAD指向指定的提交,暂存区跟工作区都会改变
        
    

    13. 分支合并及冲突解决

    1. 使用merge命令进行分支合并: git merge 分支
    2. 冲突解决:
        * master分离出dev分支,对a文件修改后提交,之后跑到master分支,也对a修改后提交, 之后, git merge dev分支,此时冲突产生
        * git diff --name-only --diff-filter=U 查看冲突的文件
        * git ls-files -u:  也可以显示没被合并的文件,之后使用vim对文件进行修改或者直接用开发工具进行修改
    

    14. git标签:

    1. git tag : 不添加任何参数,表示显示标签(以字母序), 非按时间.
    2. git tag 标签名 : 打标签,标签名默认是给最近的一次提交打上标签.
    3. git tag 标签名 commitid: commitid可以使用git log --online得到(前面的一串数字)
    4. git show 标签名 : 显示与标签名相关的提交信息
    5. git tag -d 标签名 : 仅仅删除标签,不会删除提交
    6. git push origin(远程分支名) 标签名: 把某个标签(本地以存在的,否则推送失败)推送到远程服务器上.
    7. 删除远程标签:
        * 先删除本地标签: git tag -d 标签名
        * 再删除远程标签:`git push orign(远程分支名) :refs/tags/标签名`
    8. 标签跟commit挂钩,只要commit存在于多个分支,那么这几个分支就能看到这个标签.
    

    15. .gitignore

    1. 为什么要使用.gitignore 文件
    大量与项目无关的文件全推到远程仓库上,同步的时候会非常慢,且跟编辑器相关的一些配置推上去之后,别人更新也会受其影响。所以,我们使用该文件,对不必要的文件进行忽略,使其不被git追踪
    2. 一把情况下,.gitignore文件,在项目一开始创建的时候就创建,并推送到远程服务器上。这样大家初次同步项目的时候,就是用到该文件,避免以后,团队成员把与项目无关的文件,传到远程服务器上.
    3. 编辑.gitignore(将忽略不推送到远程服务器的文件下载文件中即可):
    target
    .idea
    4. 将文件添加到暂存区使用git add 文件名,不能使用git add * ,这个命令会忽略以.开头的文件
    5. .gitignore文件的其他忽略:
        *.log 表示忽略项目中所有以.log结尾的文件
        123?.log 表示忽略项目中所有以123加任意字符的文件
        /error.log 表示忽略项目中根目录中的error.log 这个文件
        src/main/test/* 表示忽略/src/main/test/目录下的所有文件
        *.class 
        **/java/ 匹配所有java目录下的所有文件
        !/error.log 表示在之前的匹配规则下,被命中的文件,可以使用!对前面的规则进行否定
    6. 如何删除已经提交的呢? 
        先使用`git rm -rf --cached 目录或文件`, 递归删除,将文件从暂存区移除. 再次使用git commit -m "注释", git push推送到远程
    7. 解释6
        * 对于已经提交到远程或本地仓库的文件,.gitignore配置之后不会生效。我们必须先删除本地暂存区里的文件,之后在加上.gitignore 文件,最后再把变更提交到远程仓库上。
        * git rm --cached 文件名  从暂存区删除某个文件
        * git rm -rf --cached 文件夹 表示递归删除暂存区该文件夹的所有东西
    
  • 相关阅读:
    MySQL操作表中的数据
    mysql查询语句进阶
    mysql基本查询语句
    mysql函数
    mysql约束
    操作MySQL表
    操作MySQL数据库
    mysql视图
    as2 播放停止音效
    as3 深复制
  • 原文地址:https://www.cnblogs.com/wadmwz/p/9702476.html
Copyright © 2011-2022 走看看