当前位置: 首页 > ai >正文

【Git】【commit】查看未推送的提交查看指定commit的修改内容合并不连续的commit

文章目录

  • 1. 查看未推送的提交
    • 方法一 :git status
    • 方法二:git log
    • 方法三:git cherry
    • 方法四:git rev-list
  • 2. 查看指定commit的修改
    • 方法一:git show
    • 方法二:git log
    • 方法三:git diff
  • 3. 合并不连续的提交
    • step1 : 启动交互式变基
    • step2 : 调整提交顺序
    • step3 : 合并提交
    • step4 : 解决冲突并提交
    • 示例

1. 查看未推送的提交

方法一 :git status

若回显内容如下,则表示本地有未推送的提交:1 commit表示没有推送的提交数量

Your branch is ahead of 'origin/main' by 1 commit.(use "git push" to publish your local commits)

方法二:git log

查看本地是否有未推送的提交:

git log origin/main..HEAD
# origin/main为远程分支名称

若回显内容为空,则表示本地所有的提交均已推送;若回显有内容,则为未推送的提交

方法三:git cherry

如下命令可列出未推送的提交:

git cherry -v origin/main
# -v : 显示提交的详细信息

回显结果中的提交即为未推送的提交

方法四:git rev-list

git rev-list可以统计为推送的提交数量:

git rev-list --count origin/main..HEAD

回显的数字即表示未推送的提交数量。

2. 查看指定commit的修改

方法一:git show

显示指定commit的日期、作者、提交信息以及文件更改的差异:

git show <commitid>
# 选项
git show --stat <commitid> : 仅显示修改的文件和行数统计
git show <commitid>:<path-to-file> : 查看特定文件的变更

方法二:git log

在提交历史中显示该commit的详细信息以及差异:

git log -p -1 <commitid>
-p : patch,表示显示差异
-1 : 表示仅显示一个提交

方法三:git diff

比较当前commit与其父commit的差异:

git diff <commitid>^ <commitid>

3. 合并不连续的提交

可以使用交互式变基调整提交顺序并合并:

step1 : 启动交互式变基

git rebase -i HEAD~N # N要足够大,能包含目标提交
git rebase -i <commitid>^ # 或者指定更早的提交点

step2 : 调整提交顺序

编辑器中显示的提交内容假设如下:

pick a1b2c3d Commit 1
pick e4f5g6h Commit 2
pick i7j8k9l Commit 3

将要合并的提交移动到相邻位置:

pick a1b2c3d Commit 1
pick i7j8k9l Commit 3  # 移动
pick e4f5g6h Commit 2 

step3 : 合并提交

将排在第二位的提交的命令从pick改为squash(保留提交信息)或fixup(丢弃提交信息)

pick a1b2c3d Commit 1
squash i7j8k9l Commit 3  # 合并到前一个提交
pick e4f5g6h Commit 2

step4 : 解决冲突并提交

保存并退出编辑器,git启动合并,若此时出现冲突则解决冲突后执行:

git add .
git rebase --continue

最后,如果使用squash则编辑最终的提交信息。

示例

# 假设要合并 a12345(新)和 b12345(旧)
git rebase -i a12345^ # 从目标提交之前开始
# 在编辑器中将 b12345 移动到 a12345 的下一行并改为squash
# 解决冲突
http://www.xdnf.cn/news/4635.html

相关文章:

  • 【Ubuntu】安裝向日葵远程控制
  • 可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
  • [逆向工程]什么是DLL重定向(十九)
  • 基于Stable Diffusion XL模型进行文本生成图像的训练
  • 《社交应用架构生存战:React Native与Flutter的部署容灾决胜法则》
  • k8s(11) — 探针和钩子
  • SpringBoot学生操行评分系统源码设计开发
  • C++函数传值与传引用对比分析
  • 课外活动:简单了解原生测试框架Unittest前置后置的逻辑
  • 录播课视觉包装与转化率提升指南
  • 【NextPilot日志移植】整体功能概要
  • 迪士尼机器人BD-X 概况
  • 5G + AR:让增强现实真正“实时交互”起来
  • 前端取经路——框架修行:React与Vue的双修之路
  • 数据来源合法性尽职调查:保障权益的关键防线
  • Android不能下载Gradle,解决方法Could not install Gradle distribution from.......
  • 2025最新:3分钟使用Docker快速部署单节点Redis
  • python+open3d获取点云的最小外接球体及使用球体裁剪点云
  • 蓝桥杯青少 图形化编程(Scratch)每日一练——校门外的树
  • VGGNet详解
  • java集成telegram机器人
  • [特殊字符]【实战教程】用大模型LLM查询Neo4j图数据库(附完整代码)
  • 赋能金融科技创新,Telerik打造高效、安全的金融应用解决方案!
  • Linux58 ssh服务配置 jumpserver 测试双网卡 为何不能ping通ip地址
  • 从ellisys空口分析蓝牙耳机回连手机失败案例
  • 正则表达式(Regular Expression)详解
  • 关于ubuntu下交叉编译arrch64下的gtsam报错问题,boost中boost_regex.so中连接libicui18n.so.55报错的问题
  • 【Python 字符串】
  • Java常用API:深度解析与实践应用
  • 【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案