博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录git rebase用法
阅读量:4841 次
发布时间:2019-06-11

本文共 2193 字,大约阅读时间需要 7 分钟。

git 是基于文件系统的版本管理工具,文档和详细介绍可以查看

一.git commit --amend

如果你对文件做了修改需要和上一次的修改合并为一个change

git add .git commit --amend

二.git rebase

  在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。 在本节中我们将学习什么是“变基”,怎样使用“变基”,并将展示该操作的惊艳之处,以及指出在何种情况下你应避免使用它 --  参考

git rebase -i HEAD~n

列出最近的几次change(从old -> new),并且左边包含可以进行的操作

1 pick 7a802ef test4  2 pick 0eaa6ba for #noTicket 1  3 pick 999e310 for #noTicket  4 pick 83bb011 for #ceshi  5  6 # Rebase c3ff658..83bb011 onto c3ff658 (4 command(s))  7 #  8 # Commands:  9 # p, pick = use commit 10 # r, reword = use commit, but edit the commit message 11 # e, edit = use commit, but stop for amending 12 # s, squash = use commit, but meld into previous commit 13 # f, fixup = like "squash", but discard this commit's log message 14 # x, exec = run command (the rest of the line) using shell 15 # 16 # These lines can be re-ordered; they are executed from top to bottom. 17 # 18 # If you remove a line here THAT COMMIT WILL BE LOST. 19 # 20 # However, if you remove everything, the rebase will be aborted. 21 # 22 # Note that empty commits are commented out

在commands里面包括了几个命令,简单介绍下

r, reword = use commit, but edit the commit message 简单的理解就是修改此commit的commit message
1 pick 7a802ef test4  2 r 0eaa6ba for #noTicket 1  3 pick 999e310 for #noTicket  4 pick 83bb011 for #ceshi

保存后进入编辑commit message模式

1 for #noTicket 1  2  3 测试  4  5 Change-Id: Ia0542f3b9292df45213c567948ff6f797858426f

保存退出后对应change的message就修改成功了

edit : use commit, but stop for amending 选取此commit,并且保存退出后提交的修改将amend此commit

1 pick 7a802ef test4  2 e 73c9c8f for #noTicket 1  3 pick 5cc2966 for #noTicket  4 pick 437ba25 for #ceshi

保存退出后:

gerrit-workshop git:(master) git rebase -i HEAD~4Stopped at 73c9c8f1b281b8636ae990f58d1fba6260efb589... for #noTicket 1You can amend the commit now, with    git commit --amendOnce you are satisfied with your changes, run    git rebase --continue

 之后做的修改再次amend后会基于这个commit

git add . 将所有修改提交到暂存区git commit --amend 将暂存区的修改提交到本地仓库修改你刚才选中的changegit rebase --continue 回到最初的状态

第三个 squash use commit, but meld into previous commit ,将这个change合并到上一次change中,并且会保留这个change的message,相当于将两个commit合并为一个

第四个 fixup 和squash一样,但是不会保留change的message

 

转载于:https://www.cnblogs.com/Sir-Lin/p/7017154.html

你可能感兴趣的文章
概率DP RED IS GOOD
查看>>
Linux Shell 小脚本经典收藏
查看>>
go tool proof
查看>>
numpy数组及处理:效率对比
查看>>
Luogu P1318 积水面积
查看>>
前台线程 和 后台线程
查看>>
PHP性能优化大全(转)
查看>>
shell编程
查看>>
ImageSwitch+Gallery
查看>>
【软件需求工程与建模 - 小组项目】第0周:团队成员介绍
查看>>
unresolved external symbol "public: virtual __thiscall...错误
查看>>
php连接oracle oracle开启扩展
查看>>
入门自定义标签,(在SSH里面有自定义标签的练习)
查看>>
最近遇到的一些问题汇总
查看>>
mysql插入数据报错一二
查看>>
spring mvc 常用前后台数据交互的注解
查看>>
Linux学习12-CentOS设置多个tomcat开机自启动
查看>>
ASP.NET MVC Controller 编程所涉及到的常用属性成员
查看>>
条款37:绝不重新定义继承而来的缺省参数值(Never redefine a function's inherited default parameter value)...
查看>>
HDU 4288 Coder 【线段树+离线处理+离散化】
查看>>