【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

相关文章

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl