首页 > 其他分享 >Git

Git

时间:2023-08-11 23:24:49浏览次数:37  
标签:文件 git -- Git 提交 commit 分支

Git 操作

Git 相关配置

git config --global user.name "用户名"
git config --global user.email "有效的邮箱地址"

Git 基础操作

  • 初始化本地仓库

    git init
    

    ​ 在文件夹内使用该命令后,会新增一个.git文件夹

  • 查看文件的状态

    git status
    

    ​ 进入本地版本查看工作区、暂存区中文件的状态

  • 工作区的文件添加暂存区

    git add 文件名
    git add 文件名1 文件名2 ...
    git add X*X    # *为通配符
    

    ​ 在文件执行git add 文件之前,执行git status,未添加到暂存区的文件名称显示红色。

    ​ 将工作区的文件添加到暂存区后,执行git status,文件名称显示绿色。

  • 将文件从暂存区撤回工作区

    git rm --cached 文件名
    
  • 暂存区的文件提交本地版本库

    git commit [文件名] -m "提交说明"  # 文件名不填,代表暂存区的所有文件夹和文件全部提交到本地版本库
    git commit -m "提交说明"  # 不指定文件名,意味着将暂存区的所有文件全部提交到本地版本库
    
  • 本地版本库中的文件添加到远程仓库

    # 与仓库地址建立远程连接
    git remote add origin 远程仓库地址
    git push -u origin 分支名
    
    git push -u origin master # 推送 master 主分支 到 远程仓库
    git push -u origin testing  # 推送 testing 主分支 到 远程仓库
    
  • 查询当前仓库远程路径

    git remote -v
    
  • 克隆远程仓库

    git clone 远程仓库地址
    
  • 从远程仓库获取的文件合并到本地的版本

    git pull
    
    git pull origin 远程分支名:本地分支名  # 与本地分支合并
    git pull origin 远程分支名  # 远程分支与当前分支合并
    
  • testing分支代码更新,将testing分支代码合并到主分支master

    git checkout master
    git pull origin master
    git merge testing
    

git push origin master
~~~

​	`git merge`合并代码存在冲突时,需要手动解决冲突后继续提交
  • 将在工作区的文件修改,继续提交到本地版本库

    git add 文件名
    git commit [文件名] -m "提交说明"
    
    git commit -a -m "提交说明"  # 未被追踪的文件不能使用
    

    ​ 可以看到,未被追踪的文件,不能从工作区直接提交到版本库,使用-a也不行

  • 查看暂存区文件列表

    git ls-files
    
  • 查看本地版本库文件列表

    git ls-files --with-tree=HEAD
    

在 Git 中进行忽略文件操作(不需要的文件可以不提交)

  • 在根目录创建名为.gitignore的文件,将要忽略的文件名添加进去,之后 Git 就会自动忽略这些文件。

  • .gitignore文件本身要放在版本库里,并且对.gitignore做版本管理,不提交到本地版本库或者远程仓库,只对本地副本有效

  • 文件.gitignore格式如下:

    • 空行或者以#开头(注释)的行会被 Git 忽略
    • 匹配模式可以以/开头,防止递归
    • 匹配模式最后以/结尾,表示忽略的是目录
    • 在模式前加!取反,表示忽略指定模式以外的文件或目录
  • 匹配正则表达式

    • *表示匹配零个或者多个任意字符

    • [abc]表示匹配中括号里面中的一个

    • ?表示只匹配任意一个字符

    • [0-9]表示匹配所有 0 到 9 的数字

    • **表示匹配任意中间目录,a/**/a可以匹配a/za/b/za/b/c/z

  • 示例

    忽略 public 下的所有目录的文件
    /public/*
    
    不忽略 /public/assets
    !/public/assets
    
    忽略具体文件
    index.html
    
    忽略所有的 java 文件
    *.java
    
    忽略 a.java b.java 文件
    [ab].java
    
    忽略 doc/ 目录及其所有子目录的 .pdf 文件
    doc/**/*.doc
    
    忽略 doc/ 目录下的所有 .txt 文件,但不忽略 doc/server/ 下的 .txt 文件
    doc/*.txt
    
    忽略任何目录下的名为 build 的文件夹
    build/
    
    只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO 文件
    /TODO
    

git diff 命令

  • 说明:在commit操作之前,确定要提交的文件更改了哪些地方

  • 比较工作区暂存区中文件的差别

    git diff [文件名]
    git diff --stat [文件名]  # 显示有多少行发生的变化,简洁的展示差异
    
  • 比较暂存区本地版本库中文件的差别

    git diff --cached [文件名]
    git diff --staged [文件名]  # 作用同上,git 1.6.1 版本可用
    git diff --stat --cached [文件名]
    git diff --stat --staged [文件名]
    
  • 补充

    git diff HEAD [文件名]  # 比较 工作区 和 最新本地版本库 提交的差异
    git diff <commit-id>  # 比较 工作区 和指定 commit 提交的差异
    git diff --cached commit-id  # 比较 暂存区 和指定 commit 提交的差异
    git diff [<commit-id1>] [<commit-id2>]  # 比较两个 commit 提交之间的差异
    

Git 文件重命名

  • 直接修改工作区文件的名称,使用git status会发现修改前文件被删除,新增一个刚刚重新命名后的文件,且新增文件未被追踪。执行git add 删除的文件 新增的文件,使用git status查看,Git会分析出在进行文件重命名的操作,再次提交到本地版本库即可。

    Snipaste_2023-08-03_23-38-26

  • 直接使用git mv命令

    git mv 文件原名称 文件新名称  # 相当于执行上述所有的步骤,Git 分析出文件已被重新命名,再次进行 提交 即可
    
    # 相当于执行了
    mv 文件原名称 文件新名称
    git rm 文件原名称
    git add 文件新名称
    

Git 删除

  • 仅删除暂存区文件

    git rm --cached 文件名
    # 通过 commit 提交,也可将 本地版本库 的文件也删除
    

    恢复已删除文件

    # 方法1: 将 工作区 中被删除的文件再次 添加 并 提交
    
    # 方法2
    git reset --mixed HEAD
    
  • 工作区``暂存区``本地版本库中某文件全部删除

    git rm 文件名
    # 再次 commit 提交即可
    

Git 撤销

  • 撤销工作区文件的修改,但没有提交到暂存区

    git restore 文件名
    git checkout -- 文件名  # 用法同上,但新版 Git 不建议使用此法
    
  • 撤销暂存区文件的修改,但没提交到本地版本库

    git restore --staged 文件名  # 仅从暂存区撤销到工作区,不会撤销工作区文件的修改
    # git reset HEAD 文件名  # 用法同上,但新版 Git 不建议使用此法
    git restore 文件名  # 两步完成撤销暂存区文件的修改
    

Git 查看历史版本记录

  • 查看详细的历史版本记录,包括commit-id作者的信息提交的时间提交说明信息

    git log [文件名]  # 文件名不写,就是查询所有,信息较多的话,可以按`q`提前结束查看
     
    # 查看最近两次提交的信息
    git log -n2 [文件名]
    
  • 简化显示历史版本记录

    git log --oneline [文件名]
    
    # 简化查看最近两次提交的信息
    git log --oneline -n2 [文件名]
    
  • 以简单图形的方式查看分支版本历史

    git log --all --graph [文件名]
    
    • 翻页与退出
      • 上下键:可以看上一行和下一行
      • 回车:显示下一行
      • 空格:显示下一页
      • q键:退出git log命令显示界面
  • 查看指定分支版本历史

    git log 分支名称
    
  • 查看所有的历史版本

    git log --all
    
  • 拓展

    • 查看指定文件的修改记录
    git blame 文件名
    
  • git reflog查看历史提交版本,与git log的差异

    909969

    • git log只可以查看HEAD指针及其之前的版本信息,如果版本发生回退操作,HEAD指针之后仍存在历史提交版本的情况,而这些提交通过git log命令看不到。
    • git reflog可以查看所有的历史版本信息

版本回退 git reset

git reset回滚到指定的commit-id

  • 移动HEAD指针的指向,指向了指定的提交版本,改变了本地版本库的文件版本,但不会改变工作区和暂存区中的文件的文本

    git reset --soft commit-id
    git reset --soft HEAD^  # 回退到上一版本
    
    git diff --cached 文件名  # 回退后,对比工作区、暂存区与本地库中版本中文件的差别
    
    # 若想要恢复到回退之前的版本,再次从暂存区提交即可
    
  • 移动分支HEAD指针的位置,且将暂存区中的数据也回退到了指定版本

    git reset --mixed commit-id
    
  • 移动分支HEAD指针的位置,且将工作区暂存区中的数据也回退到了指定版本

    git reset --hard commit-id
    
    # 想要恢复到回退之前的版本,只能使用 git reset --hard commit-id 命令回退
    

撤销 git revert

提交一个新的commit-id,来撤销之前的commit

  • revert命令是撤回某个改动,不会删除任何commit记录,而是新增一条revert操作的commit记录(会弹出commit提交信息窗口)。

  • 举例:commit-1commit-2是正常提交,commit-3commit-4是错误提交。现在要把commit-3commit-4撤销掉,此时,指针指向了commit-4的提交。我们需要将HEAD指针移动到commit-2就可以达到目的。

    • 方法1

      git reset --hard <commit-2>
      
    • 方法2:先撤销最近的

      git revert <commit-4>  # 回车后输入 commit 提交信息,HEAD指针指向了这个新生成的版本,而不是<commit-4>的目标版本
      git revert <commit-3>
      
  • 移除某几次提交的修改

    git revert <commit-n> <commit-n-1> <commit-n-2>
    
  • 移除某几次连续提交的修改(含头不含尾,包含<commit-新>不包含<commit-旧>

    git revert <commit-新> ... <commit-旧>
    
  • git revertgit reset的区别

    Snipaste_2023-08-05_22-20-51

git commit --amend命令

  • 追加提交:在不新增commit下,将新修改的代码追加到前一次的commit中。
  • 刚刚的一次commit的描述不是很准确,需要对刚刚提交的描述信息重新修改。通过git log --oneline可以查看提交信息的修改

git tag标签

  • 创建标签

    • 标签的分类:

      • 轻量标签:某个特定提交的引用

        git tag 标签名 [commit-id]  # 如果不指定 commit-id,默认 HEAD 指针所指向的提交
        
      • 附注标签:轻量标签只有标签名称,而使用附注标签,还可以为标签添加说明

        git tag -a 标签名 [commit-id] -m "说明信息"
        
  • 查看版本库中的标签列表

    git tag
    
  • 查看版本库中,可匹配的标签列表

    git tag -l "v*.*"  # * 为通配符
    
  • 查看指定标签的具体信息

    git show 标签名
    
  • 共享标签

    默认情况下,git push命令不会传递标签到远程仓库服务器上,所以需要手动推送标签

    • 推送本地指定标签

      git push  标签名称
      
    • 推送本地所有标签

      git push origin --tags
      
  • 删除标签

    • 删除本地标签

      git tag -d 标签名  # 此命令并不会从任何远程仓库中移除这个标签
      
    • 删除远程标签

      # 第一种
      git push origin --delete 标签名  # 推荐使用
      # 第二种
      git push origin :refs/tags/标签名
      

Git 分支管理

  • 分支管理的好处

    • 同时并行推进多个功能开发,提高开发效率
    • 版本迭代更加清晰
    • 利用代码review的实现,从而使整个团队开发更加规范,减少bug
  • 创建分支

    git branch 分支名  # 使用 git log --oneline 可以查看分支所在位置,但此时为切换到新建分支
    
  • 分支切换

    git checkout 分支名
    
  • 创建分支并切换到该分支

    git checkout -b 分支名
    
    # 相当于
    git branch 分支名
    git checkout 分支名
    
  • 查看分支列表

    git branch  # 在所在分支前面会显示 *
    
  • 查看所有分支的最后一个提交

    git branch -v
    
  • 删除分支

    • 删除分支的前提:必须要保证当前工作的分支,不是要删除的分支,如果是,则需要切换到其他分支,例如切换到主分支上。
    git checkout master  # 切换到主分支
    git branch  # 查看当前分支
    
    # 分支没有合并到主分支,如果要删除它(删除无用分支)
    git branch -D 分支名  # D 是大写字母
    
  • 新建一个分支并且使分支指向指定的提交对象

    git branch 分支名 commit-id
    
    • 拓展

      git branch -b 分支名 commit-id
      # 相当于
      git branch 分支名 commit-id
      git checkout 分支名
      

标签:文件,git,--,Git,提交,commit,分支
From: https://www.cnblogs.com/HollowPan/p/17624125.html

相关文章

  • Git的基本使用
    此次仿真试验主要集中于gitee上进行1、单人项目开发  gitadd.                //表示将所有代码提交至暂存区     gitcommit-m"提交信息"  //将代码提交至本地仓库,注意提交的附加信息不可或缺     gitpu......
  • Pycharm配置git
    原文链接:https://www.jianshu.com/p/ae92970d20621.下载Gitee插件同样在设置页面,选中Plugins,并搜索Gitee安装。安装后,重启一下Pycharm。在VersionControl中会增加Gitee选项。2.配置Git账号在上一步新增的VersionControl>Gitee,添加你的账号密码。添加账号密码;......
  • Github编辑TOC目录
    任意1-6个#标注的标题都会被添加上同名的锚点链接 [标题1](#标题1) [标题2](#标题2) [标题3](#标题3) #标题1 ##标题2 ###标题3锚点跳转的标识名称,可使用任意字符,大写字母要转换成小写 [Github标题1](#github标题1) ###Github标题1多单词锚点的空格用-......
  • 两分钟带你学会ssh免密登录(git)
    欢迎访问幸福拾荒者,一个前端知识总结分享平台,与大家一起共同成长共同进步!......
  • chatGPT3.5搭建git
    https://github.com/Chanzhaoyu/chatgpt-webdocker-compose.yamlversion:'3'services:app:image:chenzhaoyu94/chatgpt-web#总是使用latest,更新时重新pull该tag镜像即可ports:-10.0.0.250:3232:3002environment:#二选一......
  • SourceTree git报错 这是一个无效源路径/URL的
    首先根据网上查询的资料排查账号信息,账号信息正常,git客户端也安装了 解决问题:git支持未打开  未打开的样式类似下面 ......
  • gitea ci/cd
    1.建立目录mkdir-p/data/{gitea,act_runner}2.docker-compose.ymlversion:"3"networks:custom-local-net:driver:bridgeipam:config:-subnet:"172.16.0.0/18"gateway:"172.16.0.1"servic......
  • git 本地仓库关联远程仓库
    #初始化gitinit#关联远程仓库[email protected]:idiv/[project].git#先从远程仓库拉取gitpull--rebaseoriginmaster#提交gitpush-uoriginmaster#-------------------------------------------------------------#强制合并gitpullorig......
  • gitee教程
    目录1、gitee是什么?2、git网站上的注册登录3、准备工作4、上传文件到gitee5、下载自己的仓库和别人的*6、基本命令汇总:1、gitee是什么?基于git的代码托管协助平台2、git网站上的注册登录打开gitee官网Gitee-基于Git的代码托管和研发协作平台打开注册登录即......
  • Git 教程
     前言工作区(WorkingDirectory)暂存区(Stage)版本库(Repository)远程仓库(Remote)1.Git分支规范1.1分支类型分支类型基于GitFlow规范,并做了简化。功能分支(feature) 紫色发布分支(release) 黑色和红色修复分支(hotfix) 灰色主分支(master) 绿色 1.2分支命......