git压缩版本快照

作者: HWilliamgo | 来源:发表于2018-07-19 15:14 被阅读12次

目前有两种方案:

  1. git merge --squash
  2. git rebase -i HEAD~n

1. merge

git merge --squash <要合并的分支>

例子:
本地的情况:

  1. 用普通的git merge


当用git checkout master+git merge develop:

省略了origin/master
此时用git push,会将3,4,5,10,11,12,13版本快照全部push到服务器去。那么如果要我要压缩,把这么多版本快照压缩成一个版本快照然后push到服务器呢?
  1. 用git merge --squash <要合并的分支>
git checkout master
git merge --squash develop

此时用git push,只会push3和13到服务器去,于和之前的区别在于,13不再指向12,因此不会把12那边的链都push上去。

当然,此时还是会push两个版本快照到服务器,那么咋办:从origin/master再checkout一个新的分支,然后用git merge -squash master,再push,就可以了。

2. rebase

git rebase -i HEAD~n

上述表示选定当前分支中包含HEAD在内的n个最新版本快照为对象,并在编辑器中打开。
比如本地版本库为如下:

* f9bcbae (HEAD -> master) 12346579
* aa82af1 132
* 58f2314 用文本编辑器写的comment
* e5d8212 (origin/master) 123

这个时候push的话,会吧f9bcbae,aa82af1,58f2314都push到服务器去。
执行:

git rebase -i HEAD~3

git打开了文本编辑器,显示:

pick 58f2314 用文本编辑器写的comment
pick aa82af1 132
pick f9bcbae 12346579

# Rebase e5d8212..f9bcbae onto e5d8212 (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
#   However, if you remove everything, the rebase will be aborted.
#
#   
# Note that empty commits are commented out

把后面的两个版本快照的前缀pick修改为fixup

pick 58f2314 用文本编辑器写的comment
fixup aa82af1 132
fixup f9bcbae 12346579

保存,关掉文本编辑器。
显示:

$ git rebase -i HEAD~3
Successfully rebased and updated refs/heads/master.

查看版本库信息:

* 2db421a (HEAD -> master) 用文本编辑器写的comment
* e5d8212 (origin/master) 123

原本那三个版本快照只剩了一个刚才没有修改pick前缀的版本快照,并且hash也改变了,猜测意思是:重新生成了版本快照。
此时也达到了压缩版本快照的目的。push时,只会push2db421a上去。

相关文章

  • git压缩版本快照

    目前有两种方案: git merge --squash git rebase -i HEAD~n 1. merge...

  • git在github上的操作的版本回退

    git在github上的操作的版本回退 找到你要回退的版本快照的hashCode git reset --hard...

  • Git 命令

    git 基本操作 分支快照 最佳关联方式 直接修改git的配置文件 config 版本回滚原理 git用户配置 打...

  • maven-git-jenkins自动部署平台搭建

    centos版本7 maven版本3.5.2 git版本2.13.0 0.这种大型的安装 一定要先打快照 别问我为...

  • Git 比较

    比较工作区和暂存区 git diff 比较两个版本(快照) git diff ID1 ID2 比较工作区和仓库版本...

  • GIT 使用教程 介绍

    GIT @(版本管理)Git 分布式版本控制系统,客户端并不只是提取最新的版本文件快照,而是把代码仓库完整地镜像下...

  • Linux 安装git

    查看当前git版本 查看最新版git 移除旧版本git(如果有) 下载git安装包安装 解压压缩文件。 只是解压完...

  • Git——基础

    Git基础 1.直接记录快照,而非差异比较 Git和其它版本控制系统(包括Subversion和近似工具)的主要差...

  • Gitの创建/删除/更新/推送标签 day07

    2019/08/05 标签管理 Git的标签就是版本库的快照,是指向某个commit的指针 创建标签 用命令git...

  • Git 常用命令汇总

    分支的三个版本: 远程版本库,如 github.com; 远程快照,使用 git branch -r 查看到的 o...

网友评论

    本文标题:git压缩版本快照

    本文链接:https://www.haomeiwen.com/subject/tprtmftx.html