Git 压缩多个 commits 提交

作者: , 共 844 字 , 共阅读 0

分为三步。最简单的:

git rebase -i origin/master

1、选择提交

1.1、按个数选择

基本命令:

git rebase -i HEAD~39

其中 39 是你要压缩的提交个数,从最近一次往前数。如果你想压缩没有同步到远程的所有提交,有个简单的方法,直接输入git status查看结果:

$ git status
On branch master
Your branch is ahead of 'origin/master' by 39 commits.
  (use "git push" to publish your local commits)

上面结果中的 39 就是我们所需要的个数值。

1.2、按 hash 值或标签来选择

git rebase -i HEAD~39需要数个数,还有一种方法是提供选择范围前一个提交的 hash (压缩范围不包括这个提交):

git rebase -i xxyyzz

GIT 的标签可以替代 hash 值,因此下面这样也是可以的,如果要压缩没有同步到远程的所有本地提交,这个是最简单的命令:

git rebase -i origin/master

2、选择和压缩

这时你的编辑器会有弹窗,显示出你想要合并的提交列表。类似于下面的:

pick xxxxxx done 1
pick yyyyyy done 2
pick zzzzzz done 3

我们需要将除了第一个 pick ,其它的 pick 都改成 s (表示 squash ,压缩)。可以用 vim 的快速替换,然后再把第一个 pick 改回来。

pick xxxxxx done 1
s yyyyyy done 2
s zzzzzz done 3

保存文件后直接退出即可。

3、创建新的提交

现在 GIT 已经把多个提交压缩成一个了,然后弹出提交注释编辑框,默认是所有提交的注释合起来。可以直接编辑,然后保存退出即可。

Q. E. D.

类似文章:
编程 » GIT
git经常出现类似于HEAD detached at origin/development的错误提示。这是因为当前的 HEAD 没有位于任何一个分支上的缘故。
编程 » GIT
有时候不小心把一些大文件 commit 到了本地版本库,但往网络版本库同步时,因为文件过大被拒绝。如果在上传前,本地有多次提交,此时再在当前版本里删除这些大文件还不够,还需要把历史记录全删掉。效果要跟从来没提交过这些文件一样。
相似度: 0.175
IT » GIT
GIT 的一个很大的问题是没有权限划分,所有人对项目下所有东西都有(查看)权限(只能设置分支的推送权限),无法对特定文件和文件夹设置单独的权限。这个功能只能借用 SUBMODULE 来实现。
相似度: 0.162
IT » GIT, proxy
大部分设置都是通过git config命令实现的:
IT » gitlab, git
用 gitlab 搭建的 git 私有服务器,占用空间不断增长,已高达 400G。仔细检查了一下,真正的库数据/var/opt/gitlab/git-data/repositories只有 7 个 G ,真正占用空间的是/var/opt/gitlab/prometheus/data,占用了将近 400G ,里面很多 80M 一个的大文件。
IT »
有时候用vim打开文件,每行结尾都有一个灰色的^M。这个原因是该文件在 windows 或 mac 系统上被创建:
IT » windows terminal, SSH
微软放出了 windows terminal 的正式版,它不光是 windows 自带的命令行终端,也可以用来替代 mobaterm 之类的 SSH 客户端。下面是其设置的一些笔记。
编程 » django, requests, python
requests 除了 url 之外,还有 params, data 和 files 三个参数,用于和服务器后台交互。
召集一个队伍去走了湖门村到银山塔林的环线,里程不到 9 公里,爬升约 640 米。轨迹已上传到两步路:https://www.2bulu.com/track/t-7eLEm2awfILp%25252FR2KBg5Tzw%25253D%25253D.htm。导航目的地「湖门村」,出发处就有几个停车位,或者路边找地方停车。
这已经是连续第三周骑行,和一帮小朋友一起骑行通州大运河森林公园。我们从河东岸「漕运码头停车场」出发,往南顺时针骑到「新武窑桥」,过桥到河西岸,往北一直骑到「运通桥」绕回出发地的停车场。全长 26 公里,轨迹已上传两步路:https://www.2bulu.com/track/t-ynoFjFETq8Dp%25252FR2KBg5Tzw%25253D%25253D.htm