【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

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD