美文网首页
一文了解Git常用命令

一文了解Git常用命令

作者: lzb30 | 来源:发表于2020-03-05 14:40 被阅读0次

    1.工作流程

    四个区域

    • 远程仓库
    • 本地仓库
    • 工作区
    • 暂存区

    2.Git使用初体验

    2.1配置使用者信息

    git config --global user.name  
    //配置用户名
    git config --global  user.email  
    //配置邮箱
    git config --global  --list  
    //查看配置  
    

    2.2常用命令

    git init  
    // 在指定文件夹下执行,之后该文件夹会变成一个git仓库  
    git status  
    // 查看 Git 仓库的状态,主要是查工作区和暂存区有没有文件。  
    git add 文件名  
    //将文件添加到暂存区中  
    git commit 文件名 -m '注释内容'  
    //将文件添加到本地仓库中并产生历史版本记录  
    git log  
    //查看当前分支历史提交记录  
    

    3.Git 基础命令相关操作拓展

    3.1 git add 的批处理操作

    git add .  
    //将修改的文件和新文件,直接提交到暂存区中  
    git add -u  
    //仅将执行过 git add 后再次修改的文件直接放入暂存区中  
    git add -A  
    //上面2个命令的集合。  
    

    3.2git log 使用操作详细介绍

    git log
    //当前分支所有提交历史记录。  
    git log --all
    //查看所有分支的提交历史记录  
    git log --oneline
    //查看简洁提交历史记录  
    git reflog 
    //查看所有分支的所有操作记录 (包括被删除的commit 操作记录)后面会介绍到。  
    git log -n2
    //查看最近2次提交的历史记录  
    git log -p -2
    //最近两次提交差异显示  
    git log --pretty=oneline
    //查看简洁提交历史记录  
    

    3.3文件删除和修改名称操作

    git rm 文件名称
    //从工作目录中删除该文件并且本地不保留。  
    git rm --cached 文件名称
    //从版本控制中删除该文件,但在本地保留该文件(相当于将文件从暂存区撤销到工作区中)  
    git mv 原来名称 新的名称
    //更改文件名并提交到本地仓库 (暂存区和本地仓库文件)本地仓库需要再次执行 **commit** 提交。  
    

    4.帮助命令

    4.1Git 帮助命令介绍

    git help  
    //展示经常使用命令的介绍。  
    git help 具体操作命令  
    //对具体命令操作的介绍 会打开默认游览器进行查看具体命令介绍。  
    git 具体操作命令 -h  
    //对具体命令操作的介绍  
    

    5.撤销命令

    5.1撤销命令介绍

    git chekout --文件名称
    //将工作区的文件撤销到缓存区中  
    git reset 文件名称 或 git reset HEAD 文件名称
    //将暂存区的代码撤销到工作区中。  
    git reset --hard 要切换 commit 的记录id 
    //丢弃所有历史记录并将更改返回到指定的提交历史上 (慎用)
    

    6.Git 分支(Branch)CRUD

    6.1 创建

    git branch 分支的名称
    //创建新的分支  
    git branch 分支名称 commitId
    //在指定 commitId 基础上创建分支  
    git checkout 分支的名称
    //切换分支  
    git checkout -b 分支的名称
    //创建新的分支并切换到该分支上  
    git checkout -b 分支名称 commitId
    //在指定 commitId 基础上创建分支并切换到该分支  
    

    6.2 查看

    git branch
    //查看本地所有的分支  
    git branch -a
    //查看本地和远程所有的分支。  
    

    6.3 修改

    git branch -m 原来的名称 新的名称
    //修改分支的名称  
    git push origin 分支名称
    //将分支推送到远程仓库中。  
    

    6.4 删除

    git branch -d 分支名称
    //删除本地仓库分支  
    git push origin --delete 分支名称
    //删除远程仓库分支。  
    

    7. Git 标签(Tag)CRUD

    7.1什么是标签

    • 将标签理解成里程碑。
    • 对于开发完的相对比较完善的 Release 版本我们可以创建一个标签

    7.2 标签种类的介绍

    • 轻量标签(lightweight)
      • 用于临时的标签
      • 轻量标签仅仅记录了commit 的信息。
    • 附注标签(annotated)
      • 记录的信息更为详细 它包含了创建标签的作者 创建日期 以及标签信息。
      • 一般建议创建附注标签。

    7.3 Git 标签操作命令

    7.3.1 创建

    git tag 标签名称
    // 创建轻量标签  
    git tag -a 标签名称 -m '标签注释'  
    //创建附注标签  
    git tag -a commitId
    // 指定 commitId 创建标签  
    

    7.3.2 查看

    git tag 和 git tag --list | git tag --l
    //查看所有的标签。  
    git tag -l 'v*.0'
    //查看以 v 开头和以 0 结尾的所有的标签  
    git show 标签的名称
    //查看标签的具体信息  
    git ls-remote --tags
    //查看远程仓库的标签列表  
    

    7.3.3 修改

    git push origin 标签名称
    //将标签推送到远程仓库中。  
    git push origin --tags
    //提交本地所有的标签到远程仓库  
    

    7.3.4 删除

    git tag -d 标签名称
    //删除该标签  
    git push origin :refs/tags/标签名称
    //删除远程仓库的标签。  
    

    8. Git 分支合并操作

    git merge 分支名称  
    //一般我们都是主分支合并从分支比较多。  
    git rebase 分支名称  
    //主要是用来将主分支合并到从分支的操作中比较常见  
    

    8.1 git rebase 和 git merge 的区别

    • git merge 会生成新的 commit,git rebase 不会生成新的 commit
    • git merge 是按照时间顺序进行合并,而 git rebase 是将 主分支顺序不变,插入到从分支的前端。

    使用场景

    • git merge
      一般用于新功能的开发和 bug 修复;
      在主分支上进行使用
    • git rebase
      在从分支上进行使用

    注意事项

    如果分支已经 Push 到了远程仓库就不要对该分支进行 git rebase 操作
    如果已经提交到了远程分支再进行 Push 的时候容易出现冲突,我们可以采用 git push --force,但是最好是永远不要使用这个命令。

    9. 历史记录对比

    git diff --cached | git diff --stage
    //暂存区和最新提交内容比较  
    git diff --文件名
    //工作区和暂存区内容的比较。  
    git diff commitId1 commitId2 --文件名
    // 查看不同历史提交文件内容的不同  
    git diff 分支1名称 分支2名称
    //比较分支1 和分支2 提交文件内容的不同。  
    

    10.Git 远程仓库相关操作

    10.1 克隆远程仓库到本地

    通过 http 链接克隆
    git clone 远程仓库 http 链接地址
    
    通过 ssh 链接远程仓库
    • 1.查看是否有公钥和私钥
     ls -al ~/.ssh  
    
    • 2.没有则生成密钥
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • 3.在 Github上配置我们的公钥内容
    • 4.git clone 克隆ssh url

    10.2 远程仓库推送、拉取操作命令

    git push
    //将本地分支的更新推送到远程仓库中。  
    git fetch 
    //从远程仓库中获取最新的内容 但是不会执行合并的操作(**git merge**)  
    git pull
    //从远程仓库中获取最新内容并且合并到本地仓库中,相当于 **git merge** + **git fetch** 的操作  
    
    让本地仓库和远程仓库建立连接
    git remote add origin 远程仓库地址
    //将本地仓库和远程仓库进行连接。  
    git push --set-upstream origin master
    //就可以将我们的本地仓库和远程仓库建立链接。  
    

    11. Git 高级操作

    11.1 修改最新提交的历史记录

    git commit --amend
    
    • 使用场景
      最新提交的文件内容写错了或者提交注释信息(messge) 想修改
      又不想产生新的的commit去修改它
    • 注意事项
      确保你的commit 没有推送到远程仓库中

    11.2 修改历史提交记录

    git rebase -i 
    // pick改为e  
    
    • 使用场景
      发现以前的 commit 提交有问题,并想对其进行修改的话
    • 注意事项
      该操作执行的前提是你还没有将你的 commit 推送到远程仓库中

    11.3 修改历史注释

    git rebase -i  
    // pick改为r 
    

    11.4 合并多个 commit

    git rebase -i  
    // 除了第一个pick,其他改为s  
    

    11.5 把暂存区的工作保存起来

    git stash
    
    • 场景
      * 修改文件,要切换的别的分支去工作但是我们又不想将我们当前分支的工作进行提交
    • 主要操作命令
    git stash
    //即将我们的工作内容进行保存  
    git stash list
    //查看我们储藏的列表  
    git stash apply 
    //将我们的最近储藏取出来但是不会删除该储藏  
    git stash pop
    //将我们的最近储藏取出来并删除该储藏  
    git stash drop 
    //将储藏清理掉。  
    git stash clear 
    //清除所有的储藏  
    

    12. Git 最好不要使用的危险命令

    git reset --hard  
    //危险之处在于如果添加的工作内容没有执行 commit,执行 git reset —hard,那么这些没有 commit 的工作内容有可能丢失。  
    git commit --amend 和 git rebase -i  
    //修改操作必须是在你还没有推送远程仓库前去执行
    //如果想将你的修改推送只能使用强制推送 git push -f 操作  
    git push -f  
    //这样会强制将你的历史版本覆盖到远程仓库。当然别人的提交历史也会被覆盖掉。  
    

    13.Git 原理

    做技术一定要知其然知其所以然

    Git 存储目录结构介绍

    hooks 一般用于自动化部署使用
    info 该目录用于配置一些不希望被 Git 管控的文件
    objects 该目录用于存储所有数据对象内容
    refs 该目录用于存储 Git 本地以及远程分支的引用
    config 该文件包含项目特有的配置选项,并且该配置仅对该 Git 仓库有效
    description 该文件仅供 GitWeb 程序使用
    HEAD 该文件表示当前 Git 仓库处于哪个分支 index 该文件保存暂存区信息

    Git 是如何存储的
    • Git 是一个内容寻址文件系统
      每次我们进行提交会通过 SHA-1 算法生成一个长度为 40 个字符的校验和(也就是我们的 key)然后根据校验去获取我们文件的内容。
      这种通过唯一标识的 key(也可以理解为内容的地址)去获取我们的内容的操作就是内容寻址
    • 核心部分是一个简单的键值对数据库
      你可以向该数据库插入任意类型的内容,它会返回一个 40 位字符串键,通过该 40 位字符串键可以在任意时刻再次检索(retrieve)该内容。
    • Git 的对象
      blob 是具体的文件对象
      tree 是某个时刻提交目录的内容
      commit 执行一次 commit 就会产生一个 commit 对象
      tag 可以理解成 commit 的别名,一个 tag 对应一个 commit
    • Git引用
      • 什么是 Git 的引用
        可以理解成一个书签
      • Git 引用的三种类型
        HEAD 引用
        用来为我们的本地仓库打上标签使用。
        Tag 引用
        用来为我们的 Git 仓库 tag 标签使用.标签引用不会移动它永远会指向一个 Commit 对象。
        远程引用
        用来为我们的远程仓库打标签使用,远程引用是只读的

    相关文章

      网友评论

          本文标题:一文了解Git常用命令

          本文链接:https://www.haomeiwen.com/subject/jowtrhtx.html