以gitlab为例,git如何把自己的多个提交合并成一个(及注意事项)

简介: 以gitlab为例,git如何把自己的多个提交合并成一个(及注意事项)

有两处特别要注意的,都以红色标出。


源码库

柳鲲鹏 / FreeType · GitLab


本地查看提交日志

$ git log --pretty=oneline
6a91471c40defbbf936d97ee7f844d8b884db11f (HEAD -> master, origin/master, origin/HEAD) Add a bridge macro for float
a385220e59771406bd18daaa63d6849576768af9 Merge remote-tracking branch 'upstream/master'
57a419c42eb30a9c8e06e1151fe495cb5483d8f5 Remove float type, change to FT_Fixed
3ce73ca1fc7469e5f39ab21a262bfdafdf9e84b1 Werner Lemberg told me make sure use FT_EXPORT_DEF
2e669896610d3624502362fc5e9a6cb436792024 Werner Lemberg told me check white space formatting. I fixed it
5182264a40e70ff31be0a0ec8a0d5ffb5f65582e [cff] Remove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`.
0d66abca4b0df394c1e423040bcb1bedcca878b9 Synchronize `ftoption.h` flavours.
141d979af74e09bd01f6956b5cc8dfa73047c779 Minor comment changes.
c0b91c6a77f67258d56d153c03adfd4b43cb39dd Add a api, someone can oblique by any value
15f687349528fb0d7cba1ee7a8becf0af29116ec Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name.
0417527d5b5abc3ee9426f31bd95209ca97502a5 [autofit] Reset the face charmap directly.
1b6dce84f946fd784bf0882c8f6e20dc04a3110a * src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly.

其中,忽略2(合并操作),1/3/4/5/9是吾修改的,想合并到9。因为是跟别人合作的,所以不能使用HEAD~9。


网页察看提交情况

image.png


开始合并到最初的提交

git rebase -i 15f68734

注意,想合并到目标提交(ID=c0b91c6a),必须使用目标之前的那个提交(ID=15f68734)。


弹出要合并提交的界面:


image.png

修改要合并的提交

image.png


注意,这里把几个无关的提交(别人的)删除了。


pick:使用提交


s(squash):使用提交,但融合到前一个提交


一次wq

image.png

修改注释

image.png


二次wq

$ git rebase -i 15f68734
[detached HEAD 070ca99a6] Add a api and two macros, someone can oblique by any value
 Date: Mon Oct 10 10:57:10 2022 +0800
 2 files changed, 30 insertions(+), 4 deletions(-)
Successfully rebased and updated refs/heads/master.

再次查看提交日志

$ git log --pretty=oneline
070ca99a6c85ca3dd24bca44eed80ae4248ee7f2 (HEAD -> master) Add a api and two macros, someone can oblique by any value
15f687349528fb0d7cba1ee7a8becf0af29116ec Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name.
0417527d5b5abc3ee9426f31bd95209ca97502a5 [autofit] Reset the face charmap directly.
1b6dce84f946fd784bf0882c8f6e20dc04a3110a * src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly.

可以看到完全达到了目标。


提交修改到远程仓库

$ git push -f
warning: redirecting to https://gitlab.freedesktop.org/quantum6/freetype.git/
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 8 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 1.22 KiB | 1.22 MiB/s, done.
Total 8 (delta 6), reused 0 (delta 0), pack-reused 0
To https://gitlab.freedesktop.org/quantum6/freetype
 + 6a91471c4...070ca99a6 master -> master (forced update)

再次网页察看提交情况

image.png



目录
相关文章
|
3月前
|
存储 开发工具 git
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
172 0
|
2月前
|
开发工具 git 开发者
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
140 0
|
3月前
|
JSON 开发工具 git
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
|
13天前
|
开发工具 git
[git]记配置本地git到gitlab并推送
[git]记配置本地git到gitlab并推送
|
13天前
|
Linux 开发工具 git
[git]基于GitLab搭建本地Git服务
[git]基于GitLab搭建本地Git服务
|
2月前
|
开发工具 git
idea中git替换,推送到新的github或者gitlab上面
idea中git替换,推送到新的github或者gitlab上面
179 2
|
3月前
|
开发工具 git
git使用笔记-修改url并与远端库合并
git使用笔记-修改url并与远端库合并
22 1
|
3月前
|
JavaScript Go 项目管理
云效常见问题之使用gitlab仓库将代码合并评审环节集成到云效如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
150 1
|
3月前
|
开发工具 git
git 拉取代码仓库代码报错(合并错误 refusing to merge unrelated histories)
git 拉取代码仓库代码报错(合并错误 refusing to merge unrelated histories)
48 0