【git】git进阶-blame/stash单个文件/rebase和merge/cherry-pick命令/reflog和log

2024-08-25 04:12

本文主要是介绍【git】git进阶-blame/stash单个文件/rebase和merge/cherry-pick命令/reflog和log,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • git blame查看单个文件修改历史
      • git stash单个文件
      • git rebase命令
      • git rebase和git merge区别
      • git cherry-pick命令
      • git reflog和git log区别

git blame查看单个文件修改历史

  • git blame:查看文件中每行最后的修改作者

    git blame your_file
    
  • git log和git show结合

    • git log:查看文件的修改历史
    • git show:查看特定提交的修改
    git log your_file	# 查看文件的提交历史
    git log -p your_file	# 查看文件每次提交中的具体差异
    git show hash_id:your_file	# 查看某次提交中文件的差异
    
    git blame your_file		# 查看文件每一行最后修改的提交信息
    

git stash单个文件

  • git stash push命令

    git stash push -m "your comment" your_file
    
  • git stash save命令

    git stash save -- your_file "your comment"
    

git rebase命令

  • git rebase:变基到

  • 通过两个图来说明过程

  • 当执行rebase操作时,如上图

    • 先提取feature分支和master分支的公共祖先节点B
    • 从feature分支的B节点开始提取feature分支上的修改C和D
    • 在master分支的最新节点M之后逐个应用修改C和D,变成C’和D’
    • 处理冲突后,feature分支指向最新的D’分支
    • 完成变基
  • 注意:master分支的M节点不一定比feature分支的C和D老,变基后问题不好追溯

  • 变基过程中产生冲突处理:处理完冲突文件后git add file

    git rebase --continue		# 继续变基过程,可能只应用了C还没处理D
    git rebase --abort			# 放弃变基过程
    git rebase --skip			# 某个提交比如C不再需要,虽然冲突了,但可跳过该提交
    
    git rebase -i master	# 交互式方式排列或选择feature分支的一系列提交# 打开的交互界面长这样:C/D提交都要,放弃E提交,条件C/D提交顺序pick D some commit message  pick C another commit message  drop E yet another commit message
    # 如果确实要应用某几个commit,可以使用git cherry-pick命令
    

git rebase和git merge区别

  • git rebase: 提交记录比较简洁,但无法区分feature分支最早是从哪拉出来的,而且和master分支的修改先后顺序发生了变化,出问题不好追溯
  • git merge:虽然会多出一条提交记录,但便于问题追溯
  • git rebase不太推荐使用

git cherry-pick命令

  • git cherry-pick:希望合并另一个分支的某几次commit,而不希望merge另一个分支

    git cherry-pick commit_id	# 应用某个commit
    git cherry-pick start_commit_id^..end_commit_id	# 应用从start-end中间的所有commit
    git cherry-pick commit_id_1 commit_id_2	# 应用多个提交
    git cherry-pick -x commit_id	# 保留原始的提交信息git cherry-pick --continue	# 解决冲突后继续cherry-pick
    git cherry-pick --abort		# 放弃cherry-pick,恢复到操作前的状态
    git cherry-pick --skip		# 即使冲突,放弃本次cherry-pick
    git cherry-pick --quit		# 没有完成cherry-pick的序列都会被停止
    
  • git rebase -igit cherry-pick

    • git rebase -i:会修改提交历史,可能不利于问题追溯
    • git cherry-pick:只挑选特定的几个commit,不改变现有的提交历史

git reflog和git log区别

  • git log

    • 用于显示分支或文件的提交历史,方便查看提交的详细信息
    • 回顾分支的开发历史或者查看特定提交的详细信息时有用
  • git reflog

    • 用于查看分支的所有操作记录(切换,提交,reset等)
    • 关注的是分支的变化而不是具体的提交信息
    • 对于找回/恢复分支的某次提交特别有用

 


[参考文章]
[1]. git rebase的原理和优缺点
[2]. git rebase图解
[3]. 文心一言和kimi模型

created by shuaixio, 2024.08.24

这篇关于【git】git进阶-blame/stash单个文件/rebase和merge/cherry-pick命令/reflog和log的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104511

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx