• Git 的概念以及相关操作


    Git的安装

    根据Git的官方网站 :https://git-scm.com/dowmloads/,选择相应的版本,根据安装命令进行Git的安装。

    初始化

    初始化设置用户名和邮箱

    git config --global user.name  "Your Name"
    git config --global user.email  "email@mail.com"
    git config --global credential.helper store
    
    • 1
    • 2
    • 3

    创建仓库

    创建一个新的本地仓库(省略project-name 则在当前目录创建)

    git init  
    
    • 1

    下载一个远程仓库

    git clone 
    
    • 1

    工作区域和文件状态

    Git的四个区域

    • 工作区(Working Directory):电脑能看到的目录
    • 暂存区(Stage / Index):一般存放在 .git目录下的index文件,有时把暂存区叫做索引。
    • 本地仓库(Repository):工作区的隐藏目录 .git,不算工作区,是Git的版本库。
    • 远程仓库(Remote):托管在远程服务器上的仓库

    Git的三种状态

    • 已修改:修改了文件,但是未保存到暂存区。
    • 已暂存:把修改后的文件放在暂存区。
    • 已提交:把暂存的文件提交到本地仓库。

    基本概念

    • main 默认主分支
    • origin 默认远程仓库
    • HEAD 指向当前分支的指针
    • HEAD^ 上一个版本
    • HEAD^4 上四个版本

    特殊文件

    • .git git的元数据和对象数据库
    • .gitignore 忽略文件,不需要提交到仓库
    • .gitattributes 文件的属性
    • .gitkeep 使空目录被提交到仓库

    添加和提交

    添加一个文件到仓库

    git add 
    
    • 1

    添加所有文件到仓库

    git add .
    
    • 1

    提交所有暂存区的文件到仓库

    git commit -m"message" 
    
    • 1

    提交所有已修改的文件到仓库

    git commit -am'message'
    
    • 1

    分支

    查看所有本地分支,当前分支前面会有一个*,-r查看远程分支,-a查看所有分支

    git branch
    
    • 1

    创建一个新分支

    git branch 
    
    • 1

    切换到指定分支,并更新工作区

    git checkout 
    
    • 1

    创建一个新分支,并切换到该分支

    git checkout-b 
    
    • 1

    删除一个已经合并的分支

    git branch-d 
    
    • 1

    删除一个分支,不管是否合并

    git branch -D 
    
    • 1

    合并分支

    合并分支a到分支b,-no-ff参数表示禁用Fast forward模式,合并后的历史有分支,能看出曾经做过合并,而-ff参数表示使用Fast forward模式,合并后的历史会变成一条直线。

    git merge --no-ff -m"message" 
    
    • 1

    合井&squash所有提交到一个提交

    git merge --squash 
    
    • 1

    rebase不会产生新的提交,而是把当前分支的每一个提交都"复制"到目标分支上,然后再把当前分支指向目标分支,而merge会产生一个新的提交,这个提交有两个分支的所有修改。

    Rebase

    Rebase操作可以把本地未push的分叉提交历史整理成直线看起来更直观。但是,如果多人协作时,不要对已经推送到远程的分支执行Rebase操作。

    git checkout 
    git rebase 
    • 1
    • 2

    撤销

    移动一个文件到新位置

    git mv  
    
    • 1

    从工作区和暂存区中删除一个文件,然后暂存删除操作

    git rm 
    
    • 1

    只从暂存区中删除一个文件,工作区中的文件没有变化

    git rm  --cached 
    
    • 1

    恢复一个文件到之前的版本

    git checkout  
    
    • 1

    创建一个新的提交,用来撤销指定的提交,,后者的所有变化都将被前者抵消,并且应用到当前分支

    git revert 
    
    • 1

    重置当前分支的HEAD为之前的某个提交,并且删除所有之后的提交。

    git reset --mixed 
    git reset 用于回退版本
    --soft 	保留暂存区和工作区的所有修改内容。
    --hard	丢弃暂存区和工作区的所有修改内容。
    --mixed	保留工作区的修改内容,丢弃暂存区的修改内容。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    撤销暂存区的文件,重新放回工作区(git add的反向操作)

    git restore --staged 
    
    • 1

    查看

    列出还未提交的新的或修改的文件

    git status
    
    • 1

    查看提交历史,–oneline 可省略

    git log   --oneline
    
    • 1

    查看未暂存的文件更新了哪些部分

    git diff
    
    • 1

    查看两个提交之间的差异

    .gitignore文件的匹配规则

    • 从上到下逐行匹配,没一行代表一个忽略模式
      Git官网匹配规则:https://git-scm.com/docs/gitignore
    • 空行或以#开头的行会被Git忽略。一般空行用于可读性分隔,# 一般用于注释。
    • 使用标准的Blob模式匹配,例如:
      星号*:通配任意个字符
      文号?:匹配单个字符
      中括号[]:表示匹配列表中的单个字符,比如[a,b,c]表示a/b/c
    • 两个**表示匹配任意中间目录
    • 中括号可以使用短中线连接,比如:
      [0-9]表示任意一位数字,[a-z]表示任意一位小写字母。
    • ! 表示取反
  • 相关阅读:
    知识图谱04——openGL与ubuntu22.04
    Docker基础知识
    JVM参数配置
    ubuntu16 iptables命令行黑白名单设置
    Retrofit+Flow网络请求与Android网络请求的演变
    一篇文章扒掉“桥梁Handler”的底裤
    蓝桥杯刷题(二分)
    Robust Optimization, imperfect CSI, CSIT and CSIR
    Chrome 同站策略(SameSite)问题
    分享好用无广告的手机浏览器,亲测值得下载
  • 原文地址:https://blog.csdn.net/qq_52429717/article/details/136363741