【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

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET