git rebase 合并当前分支的多个commit记录
git rebase 相关的选项和用法
step1:找到想要合并的 commit
你可能出现过对同一处代码进行多次处理的场景。这会导致如下提交记录
在gitee中也是两个同样的提交记录
其实,2次提交完全可以合并成一次 commit,这个时候 rebase 就很有用了。
step2. 使用 rebase -i
#git rebase -i HEAD~n#这里的 n 是你想要合并的提交数量加一。例如,如果你想要合并最近的三个提交,就使用 HEAD~3。git rebase -i HEAD~2
#退出交互式 rebase 状态git rebase --abort
step3. 编辑提交历史:
执行上述命令后,会打开一个交互式编辑器,列出了你选择的提交。每个提交前面都有一个操作标记(通常是 pick)。将你想要合并的提交前的操作标记改为 squash 或 s(表示“合并”),这将把这个提交与前一个提交合并
打开交互编辑器如下:
pick e247817c1 支持使用json/yaml或excel方式来创建角色
pick 9d87c9c09 支持使用json/yaml或excel方式来创建角色
# Rebase 6b019ef89..9d87c9c09 onto 6b019ef89 (2 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# b, break = stop here (continue rebase later with 'git rebase --continue')# 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.#
step4.编辑合并后的提交信息
pick e247817c1 支持使用json/yaml或excel方式来创建角色
s 9d87c9c09 支持使用json/yaml或excel方式来创建角色
#修改内容 :wq保存
完成上述操作后,保存并关闭编辑器。Git 将会合并这些提交,并打开一个新的编辑器窗口,让你编辑合并后的提交信息。在这里你可以编辑合并后的提交信息,或者保持原样。
#支持使用json/yaml或excel方式来创建角色 这一行打开时是没有注释的,注释掉。
# This is a combination of 2 commits.# This is the 1st commit message:
支持使用json/yaml或excel方式来创建角色
# This is the commit message #2:#支持使用json/yaml或excel方式来创建角色
step5.完成 rebase 过程:
保存并关闭编辑器。Git 将会完成 rebase 过程,并应用你的修改。
step6.推送更新:
#如果你在一个公共分支上进行了 rebase 操作,需要使用 --force(或 -f)选项推送更新到远程仓库,#因为 rebase 改写了提交历史,可能会导致远程仓库的提交历史与本地不一致。#强行推送
git push -f origin WC-1009
step6.再次查看提交记录:
一些常用git 命令
#拉取git pull origin WC-1071
git init:
#说明: 在当前目录创建一个新的 Git 仓库。#用法: git init [directory]#示例: git init(在当前目录初始化一个仓库)或 git init my_project(在名为 my_project 的目录中初始化一个仓库)。git clone [url]:
#说明: 从远程仓库克隆一个项目到本地。#用法: git clone [url] [directory]#示例: git clone https://github.com/example/project.git(克隆名为 project 的仓库到当前目录)或 git clone https://github.com/example/project.git my_project(克隆到名为 my_project 的目录)。gitadd[file]:
#说明: 将文件添加到暂存区,准备提交。#用法: git add [file]#示例: git add index.html(将 index.html 添加到暂存区)或 git add .(将当前目录下所有修改的文件添加到暂存区)。git commit -m"message":#说明: 提交暂存区的文件到本地仓库,并附上一条说明信息。#用法: git commit -m "message"#示例: git commit -m "Added login functionality"(提交并附上说明信息)。git status:
#说明: 显示工作区、暂存区和本地仓库的状态。#用法: git status#示例: git status(显示当前状态)。git diff:
#说明: 显示工作区和暂存区的文件差异。#用法: git diff#示例: git diff(显示工作区和暂存区的差异)。git log:
#说明: 显示本地仓库的提交历史。#用法: git log#示例: git log(显示提交历史)。git pull:
#说明: 从远程仓库拉取最新的提交到本地,并尝试合并到当前分支。#用法: git pull [remote] [branch]#示例: git pull origin master(从远程的 origin 仓库的 master 分支拉取最新提交并合并到当前分支)。git push:
#说明: 将本地仓库的提交推送到远程仓库。#用法: git push [remote] [branch]#示例: git push origin master(将当前分支的提交推送到远程的 origin 仓库的 master 分支)。git branch:
#说明: 显示本地仓库的分支列表。#用法: git branch#示例: git branch(显示分支列表git checkout:
#说明:切换分支#用法: git checkout <branch>#示例: git checkout master#创建并切换到新的分支:git checkout -b<new_branch>
版权归原作者 咕噜咕噜wy 所有, 如有侵权,请联系我们删除。