Git命令练习 据说是10%

8,整理提交记录(拣选提交内容)

git cherry-pick c3 c4 c7; 选择几个节点,提交到当前分支。

“整理提交记录” —— 开发人员有时会说“我想要把这个提交放到这里, 那个提交放到刚才那个提交的后面”, 而接下来就讲的就是它的实现方式,非常清晰、灵活,还很生动。

命令形式为:

  • git cherry-pick <提交号>...

如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。

cherry-pick是捡几个提交合并到当前分支。rebase是基于B分支,将当前分支的提交都合并过去。

9,交互式rebase(4,合并分支 git rebase)

git rebase -i HEAD~4;重置最近的四次提交,可以排序和删除

git rebase -i c1;重置最近几次(直到c1)的提交

当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。

但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了。

 从左图到右图

方法一:git checkout master; git cherry-pick c4;

方法二:git rebase -i c1; git checkout master; git rebase bugFix;

10,提交的技巧

git rebase caption master;

接下来这种情况也是很常见的:你之前在 newImage 分支上进行了一次提交,然后又基于它创建了 caption 分支,然后又提交了一次。

此时你想对的某个以前的提交记录进行一些小小的调整。比如设计师想修改一下 newImage 中图片的分辨率,尽管那个提交记录并不是最新的了。

我们可以通过下面的方法来克服困难:

  • 先用 git rebase -i 将提交重新排序,然后把我们想要修改的提交记录挪到最前
  • 然后用 commit --amend 来进行一些小修改
  • 接着再用 git rebase -i 来将他们调回原来的顺序
  • 最后我们把 master 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!

当然完成这个任务的方法不止上面提到的一种(我知道你在看 cherry-pick 啦),之后我们会多点关注这些技巧啦,但现在暂时只专注上面这种方法。 最后有必要说明一下目标状态中的那几个' —— 我们把这个提交移动了两次,每移动一次会产生一个 ';而 C2 上多出来的那个是我们在使用了 amend 参数提交时产生的,所以最终结果就是这样了。

从左到右

git rebase -i HEAD~2;

git commit --amend

git rebase -i c1;相当于git rebase -i HEAD~2

git rebase caption master

11,git rebase 的用法(后面跟一个分支、后面跟两个分支)

git rebase caption;命令后面只跟一个分支B【caption】(不是当前分支A【master】),把当前分支A的更新,基于分支B再逐步提交一次。

还原

git rebase master caption;命令后面跟两个分支A【当前master】和B【caption】,相当于把B的更新内容,基于A的内容再提交一次,并把当前分支转换为B。

再还原

git rebase  caption master;命令后面跟两个分支A【caption】和B【当前master】,相当于把B更新的内容,基于A再提交一次,当前分支转为B(本来就是B)。

 又还原

git rebase newImage caption;命令后面跟两个分支A【newImage】和B【caption】,两个都不是当前分支,相当于B的更新基于A再提交一次,当前分支转为B【caption】。

12,git cherry-pick

要在心里牢记 cherry-pick 可以将提交树上任何地方的提交记录取过来追加到 HEAD 上(只要不是 HEAD 上游的提交就没问题)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值