【git rebase 与 git cherry-pick】

git rebase(普通模式)

作用:在当前分支中集成其他分支的最新修改,且美化分支结构(之前被rebase的分支就没了)。
举例
先rebase:如果想要将featur分支的内容合并到master分支,则需要先切换到feature分支,然后执行git rabase master
后推送:
其他重新提交历史的方法(如果仅仅想更改最近一次提交):如果当前提交还未推送到远端,则执行:
git commit --amend
如果当前提交已被推送到远端,且当前分支不是公共分支,那只需要执行git push –force

git rebase(交互模式)

主要用于对当前分支的提交历史进行编辑,如将多个小的提交合并成大的提交。
用法:git rebase 后加-i 或 –interactive
举例
进入交互式页面后,有如下内容
pick c50221f commit B
pick 73deeed commit C
pick d9623b0 commit D
pick e7c7111 commit E
pick 74199ce commit F
只需要更改pick为提示的值。其中:
命令:
p, pick <提交> = 使用提交
r, reword <提交> = 使用提交,但修改提交说明
e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
s, squash <提交> = 使用提交,但融合到前一个提交
f, fixup <提交> = 类似于 “squash”,但丢弃提交说明日志
x, exec <命令> = 使用 shell 运行命令(此行剩余部分)
b, break = 在此处停止(使用 ‘git rebase --continue’ 继续变基)
d, drop <提交> = 删除提交

git rebase 后悔怎么办:

之前的commit不是没有了,而是看不见了,并没有被删除。
git reflog 找到原来的提交的commit,
并通过git reset 来还原他们,甚至可以回到git rebase 之前的状态。

git cherry-pick

命令用于只需某分支部分代码的改动(如果需要某分支全部代码则需要用git merge好吧)(后面若增加配置项-n,则仅仅会更改工作区和暂存区)。
用法

  • git diff > file.patch 保存改动防止丢失
  • git checkout 到指定分支
  • git cherry-pick <目标提交>
  • 如果没有冲突就合并好了,有的话再百度

git diff > 0228.patch
注意:在摘樱桃之前,需要所有代码都commit了得。举例:git commit -a -s -m “add rest functions”。
-a:这个选项告诉 Git 对所有已经跟踪的文件自动暂存更改。通常,你需要使用 git add 命令来暂存更改,但是使用 -a 选项,Git 会自动暂存所有跟踪文件中的更改。
-s:这个选项是 --signoff 的简写,它会在提交信息后面添加一个签名,表明作者的身份。这通常用于 Git 钩子脚本,可以用来验证提交者的身份。
-m “add rest functions”:这是提交信息的正文,说明了对项目的更改。在这个例子中,提交信息表明这次提交是为了添加 REST 函数。
其他相关信息:先看一下git cherry-pick讲解网站,如果有想实验的,可以在这个网站试试。且还有一篇文章指出这个命令可能存在的潜在问题。

仅用于学习交流,谢谢。

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值