1.Git使用技巧-常用命令2

news2024/11/15 10:43:29

1.Git使用技巧-常用命令2


文章目录

  • 1.Git使用技巧-常用命令2
  • 一、本地仓库整理
  • 二、查看本地仓库
    • 查看
    • 过滤
  • 二、逆向操作
    • 1. 检出覆盖本地文件 workspace -> NULL
      • 1.1 删除workspace 文件
    • 2. 本地仓库回滚
    • 3. 远程仓库
      • 1. 远程仓库未基于代码做修改
    • 逆操作总结
  • 三、删除
    • 1. 删除远程仓库普通文件
    • 2. 永久删除
  • 四.查看文件
  • 五、暂存文件
    • 1.常用命令
      • 2. 暂存如何使用
  • 总结
  • 参考


一、本地仓库整理

提示:这里可以添加本文要记录的大概内容:

本地仓库整理分为整理上一次提交和整理多次提交
1.整理上一次提交:
把当前暂存区里的内容合并到上一次commit里,而且还可以修改上一次提交的message信息。

git commit --amend //把此次提交追加到上一次的commit内容里

上面命令执行后,跳出一个VIM编辑框(如左下图),此时我们可以修改提交内容格式(如右图)
Git会新增加一个commit-id覆盖了上一次的commit-id, 这样漏掉的文件会合并到上一次的提交,然后我们也修改了提交message的规范,大家可以通过git log –p去查看这次内容。当然我们除了添加“漏掉”的文件,也可以删除“误修改”的文件。最后使用git push –fore强制推送修改后的commit。
在这里插入图片描述

2.整理多次提交

git rebase –i commesh1  //-i后面的参数表示不要合并的commit的hash值
// -i 后为空,就是整理所有的

demo:
执行 git rebase -i 打开如下文件
在这里插入图片描述
文件内容解析:
可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
此时的commit内容的排列和git log里的排列是反的,也就是倒序的。
pick 和 squash的意思如下。我们将 ad777ea和a271901这两个commit前方的命令改成 squash 或 s,然后输入:wq以保存并退出
pick 的意思是要会执行这个 commit;
squash 的意思是这个 commit 会被合并到前一个commit;
如果我们仅仅修改commit message,需要把打算修改的commit的对应pick命令修改为reword,然后保存。

退出后会弹出如下界面,即需要我们重新编辑合并后的commit信息,未注释掉的是会包含在commit message里的,按”wqa”保存后即完成了此次commit的合并
在这里插入图片描述

只能使用如下提交命令
上述配置修改保存后:

You can amend the commit now, with
  git commit --amend

Once you are satisfied with your changes, run
  git rebase --continue
  
  如果在修改前所有的commit都已经push到远程仓库的话,我们需要使用git push --force强制推送到远程仓库

进入分支奠基状态

Administrator@DESKTOP-TH29QNR MINGW64 /j/git-test/mathlib-test (master|REBASE 
1/2)

注意:
如果在修改前所有的commit都已经push到远程仓库的话,我们需要使用git push --force强制推送到远程仓库。


二、查看本地仓库

查看在暂存区提交本地仓库的信息。

查看

git  log   // 不带任何参数

git log --onelie  //每条日志显示一行

git log -[length]  //只显示前面的length 条日志

git log --skip=[skip] -3   # 跳过前面的skip条日志

git log -p   # 显示一些统计信息以及文件的改动内容和行信息

git log --stat   # 显示提交的作者 日期 message 和文件内容统计信息

git shortlog   # 显示每个author提交commit和多少条commit

git show commit-id   # 显示commit-id的提交内容,包括所有文件的修改信息

过滤

按日期
       $ git log --after="2018-7-1"    # 201871好之后的所有日志
       $ git log –-before="2014-7-1"
按作者
       $ git log --author="Dounin"  
按照提交信息
       $ git log --grep=“issue”  # 按照提交本中是否包含issue的日志
按文件
       $ git log -- ./src/http/modules/ngx_http_xslt_filter_module.c
按照内容
       $ git log -S “ngx_free” # 即所有文件中包含了 ngx_free字符串的修改
按照范围 
       $ git log <since>..<until> # 比如 git log master..feature这可以显示出自从master分支fork之后,feature分支上所有的提交

二、逆向操作

1. 检出覆盖本地文件 workspace -> NULL

文件checkout 是从本地仓库检出文件,覆盖workspace 和index 内容
git checkout命令就是从本地仓库中或暂存区检出文件,并且覆盖工作目录的内容。
Demo:

$ git checkout branches/stable-1.14  # 检出到branches/stable-1.14分支上,即用1.14分支的内容覆盖了工作区所有内容
$ git checkout 9bfbacdd  # 检出到9bfbacdd(commit id)上,即用这个commit 内容覆盖了工作区所有内容
$ git checkout main.cpp # 从暂存区中检出内容,并且覆盖main.cpp文件内容,即尚未添加到暂存区的修改会被丢弃掉
git checkout .  # 注意有一个“.,会从暂存区里取出所有内容覆盖掉工作区的所有修改,如果连暂存区的内容也不想要
                   # 则可以git checkout commit-id
git clean -xdf  # 删除当前目录下所有的修改
如果我们想要放弃本地某个文件的修改:
git checkout file-name  # 从暂存区里

1.1 删除workspace 文件

文件已经存在工作区了,但是尚未提交到暂存区,文件状态是未标记即是untracked的内容,那么我们可以使用
git clean命令来删除这些文件,用法如下:

git clean -n :是一次clean的演习,告诉你哪些文件会被删除,记住他不会真正的删除文件,只是一个提醒。
git clean –f :删除当前目录下所有没有track过的文件,他不会删除.gitignore文件里面指定的文件夹和文件,不管这些文件有没有被track过。
git clean -f :删除指定路径下的没有被track过的文件
git clean -df :删除当前目录下没有被track过的文件和文件夹
git clean -xf :删除当前目录下所有没有track过的文件,不管他是否是.gitignore文件里面指定的文件夹和文件。

2. 本地仓库回滚

本地有三个commit,现在想针对这三个commit作回滚,可
以使用git reset命令来做,reset参数如下意思:
–soft – 缓存区和工作目录都不会被改变
–mixed – 默认选项。你指定的提交同步,但工作目录不受影响
–hard – 缓存区和工作目录缓存区和都同步到你指定的提交
git reset --hard HEAD~{n}就是把HEAD指针回退n个版本(commit),并且使用该commit的内容覆盖掉工作区的内容,即丢弃了前面n个commit的修改和当前工作区的修改。然后调用**git push origin master**推送到远程仓库。

3. 远程仓库

1. 远程仓库未基于代码做修改

使用git revert 回滚,会保留commit记录,

示例:
现在我想d061cb3这个分支不是我想要的,要回退掉:
流程如下:

git revert d061cb3 # 因为4bff67b是晚于d061cb3的,如果这两个修改的内容有依赖,是会有冲突的,当然如果想取消这次回退可以使用,git revert --abort
fix conflict # 手动去解决冲突
git commit # 然后提交,此时使用git log会发现原理的git commit记录还在,但是增加了一个revert的记录
git push # 推送至远程库

逆操作总结

在这里插入图片描述


三、删除

1. 删除远程仓库普通文件

流程:

	  // 本地仓库
      git rm -rf xx
      git add  xx
       git commit –m “remove timer mudlue”
       git push

2. 永久删除

静默删除:
比如上传了保密文件,一般开发人员不应该能看到这样的秘钥文件,需要永久删除

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch sort.hpp’ 
        --prune-empty --tag-name-filter cat -- --all  # sort.hpp也可以替换成文件夹, 此时要在git rm后添加-r参数

// 提交远程仓库
git push origin master --force  # 从上图我们也能看出来远程仓库没有被修改

四.查看文件

  1. 查看某个文件的全部commit
git log --oneline filename   # 显示文件的所有修改记录
  1. 查看文件所有commit 内容
 $ git log –p filename  # 显示所有commit的修改
  1. 查看某个文件gommit 内的修改
$ git show commit-id filename   # 显示某个commit里文件的修改
  1. 查看本地修改的差异
$ git diff filename   # 查看本地对某个文件做了那些具体修改

5.与某个commit 比较

$ git diff commit-id filename   # 显示与某个commit间所有的差异,commit-id可以替换成HEAD,比如HEAD~2

6.两个commit 之间的额差异

   $ git diff commit-id1 commit-id2   # 显示两个commit所有的差异

五、暂存文件

1.常用命令

$ git stash   # 将工作区的修改保存到缓存区,默然取名为:
          WIP on <branch_name><latest_commit_id> <latest_commit_message>
$ git stash save <name>   # 将工作区的修改保存到缓存区,且取名为name
$ git stash pop    # 取出缓存区栈顶(即最近一次)的内容,并且会删除此次pop的内容
$ git stash list   # 查看缓存里所有存储的修改
$ git stash apply stash@{X} #  取出stash里的内容,X为序号,但是不会删除stash@{X}
$ git stash drop stash@{X}  # 删除stash@{X}
$ git stash clear    # 删除缓存区里所有的记录

2. 暂存如何使用

两个分支:master FT-12345

        git stash   #  暂存修改
        git stash pop  # 从缓存里取出修改

调用git stash后就可以使用git checkout master分支上去修复bug了,修复完了之后再git checkout FT-12345后git stash pop


总结

文章主要是讲解本地仓库,回滚,查看提交记录等信息的命令

参考

Git教程

文章参考与<零声教育>的C/C++linux服务期高级架构系统教程学习:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 Jieba 和 Word2vec 的关键词词库构建

最近有空&#xff0c;把论文中用到的技术和大家分享一下&#xff08;以组件化的形式&#xff09;&#xff0c;本篇将讲述如何从大量的语料中获取诸多关键词和构建关键词词库或 xx 关键词词库&#xff08;细分领域&#xff09;。举例以购物网站的在线评论作为语料库&#xff0c;…

Python实现PSO粒子群优化算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

Git--多人协作开发

文章目录 前言一、多人协作一开发目标将dev分支内容合并至master分支 二、多人协作二开发者1操作开发者2操作突发情况内容合并至master分支 三、解决git branch -a打印已被删除的远程分支的方法总结 前言 目前,我们所完成的工作如下 : 基本完成Git的所有本地库的相关操作,git…

学无止境·MySQL(4-2)(多表查询加强版)

多表练习试题 试题2&#xff08;加强版&#xff09;1、创建表2、表中添加数据3、找出销售部门中年纪最大的员工的姓名4、求财务部门最低工资的员工姓名5、列出每个部门收入总和高于9000的部门名称6、求工资在7500到8500元之间&#xff0c;年龄最大的人的姓名及部门7、找出销售部…

【Python】面向对象 - 封装 ② ( 访问私有成员 | 对象无法访问私有变量 / 方法 | 类内部访问私有成员 )

文章目录 一、访问私有成员1、对象无法访问私有变量2、对象无法访问私有方法3、类内部访问私有成员 一、访问私有成员 1、对象无法访问私有变量 在下面的 Python 类 Student 中 , 定义了私有的成员变量 , # 定义私有成员__address None该私有成员变量 , 只能在类内部进行访问 …

分析图中常见的这种“箭头”,如何用GIS绘制?

小伙伴们, 在各种分析图、空间结构图中, 是不是经常看到这种“扇形”的箭头, 同时伴随着一些“引绿入城”等分析语言。 于是,你有没有好奇, 这种箭头是怎么做出来的? 强大的GIS是否可以绘制出这种箭头? 还是那句话—— 别问,问就是能! 其实ArcMap 和 ArcGIS P…

【大数据实战电商推荐系统】概述版

文章目录 第1章 项目体系框架设计&#xff08;说明书&#xff09;第2章 工具环境搭建&#xff08;说明书&#xff09;第3章 项目创建并初始化业务数据3.1 IDEA创建Maven项目&#xff08;略&#xff09;3.2 数据加载准备&#xff08;说明书&#xff09;3.3 数据初始化到MongoDB …

41. 同时在线人数问题

文章目录 题目需求思路一实现一学习链接题目来源 题目需求 现有各直播间的用户访问记录表&#xff08;live_events&#xff09;如下。 表中每行数据表达的信息为&#xff1a;一个用户何时进入了一个直播间&#xff0c;又在何时离开了该直播间。 现要求统计各直播间最大同时在…

Stable Diffusion系列课程上:安装、提示词入门、常用模型(checkpoint、embedding、LORA)、放大算法、局部重绘、常用插件

文章目录 一、Stable Diffusion简介与安装二、文生图&#xff08;提示词解析&#xff09;2.1 提示词入门2.2 权重2.3 负面提示词&#xff08; Negative prompt&#xff09;2.4 出图参数设置2.5 新手念咒方法 三、图生图3.1 图生图入门3.2 随机种子解析3.3 图生图拓展 四、模型4…

MySQL基础篇第3章(运算符)

文章目录 1、算术运算符1.1 加法与减法运算符1.2 乘法与除法运算符1.3 求模&#xff08;求余&#xff09;运算符 2、比较运算符2.1 等号运算符2.2 安全等于<>2.3 不等于运算符2.4 空运算符2.5 非空运算符2.6 最小值运算符2.7 最大值运算符2.8 BETWEEN AND运算符2.9 IN运算…

cmake操作目录

目录 cmake如何使用子目录 demo cmake生成build目录结构 如果指定子目录编译文件名字(binaryDir) 如果指定子目录编译的路径(binaryDir) 子目录相关的作用域 demo 子目录中定义project cmake如何使用子目录 如果项目比较小的话,我们将所有源码文件放到一个目录里面是没…

wpf border控件和Effect学习

Border&#xff08;边框&#xff09;控件绘制一个边框、一个背景。 常用的属性&#xff0c; Background&#xff1a;填充 Border 边界之间的区域或者说是绘制该区域的背景&#xff0c;是一个Brush对象。 BorderBrush&#xff1a;用于绘制外部边框颜色&#xff0c;是Bru…

Vue 和 React 前端框架的比较

Vue 和 React 前端框架的比较 本文研究了流行的前端框架 Vue 和 React 之间的区别。通过对它们的学习曲线、视图层处理方式、组件化开发、响应式数据处理方式和生态系统及社区支持进行比较分析&#xff0c;得出了它们在不同方面的优劣和特点。该研究对于开发者在选择合适的前端…

QC51XX---I2c使用

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 今天我们聊聊I2C的使用。在开发过程中多多少少会加入一些外围传感器可以给用户带来更好的使用体验。例如,利用接近传感器识别戴上耳机和取下耳机,从而去自动暂停播放音乐,或接听转移通话。又例如,用触摸或敲击替代…

【vant】打开vant表单的正确形式(基于vant表单的二次封装)

前言 最近在用vant做关于移动端的项目,由于表单字段太多,不想写直接写到template中,这样太繁琐了,所以我们以把表单弄成schema配置形式: // data.ts import type { ItemSchema } from /typing/helper; import { StudentField } from /components; import { getDictTextByCode…

在tplink路由器xdr6088中运行Docker潘多拉(pengzhile/pandora)遇到无法访问的问题

在xdr6088中搜索安装pengzhile/pandora一切正常&#xff0c;但是按照常规运行docker后&#xff0c;直接访问8899端口无法打开页面&#xff0c;进入终端 运行如下命令 /usr/local/bin/python /usr/local/bin/pandora-cloud -s 0.0.0.0:8899 即可成功运行&#xff0c;然后客户端…

RabbitMQ在SpringBoot中的高级应用(2)

过期时间 1.单独的设置队列的存活时间,队列中的所有消息的过期时间一样 Bean//创建交换机public DirectExchange ttlQueueExchange(){// 交换机名称 是否持久化 是否自动删除return new DirectExchange("ttl_queue_log",true,false);}Bean//创建队列publ…

Swagger3学习笔记

参考https://blog.csdn.net/YXXXYX/article/details/124952856 https://blog.csdn.net/m0_53157173/article/details/119454044 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact…

云之道知识付费V2小程序V3.1.1独立平台版安装使用教程

据播播资源了解&#xff0c;云之道知识付费小程序是一款专注于知识付费的小程序源码&#xff0c;为内容创业者、自媒体和教育培训机构提供全方位的互联网解决方案。 由播播资源小编全套安装云之道知识付费V2独立版系统&#xff0c;系统支持无限多开&#xff0c;相比上几版出现…

如何创建电子商务平台

创建一个电商平台已经变得简单而又高效&#xff0c;其中乔拓云作为一家专业的第三方平台&#xff0c;提供了丰富的模板和工具&#xff0c;帮助商家快速搭建自己的电商平台。本文将介绍如何通过乔拓云平台创建电商平台&#xff0c;并提供一些建议和注意事项。 首先&#xff0c;商…