git rebase实际使用教程

536 阅读4分钟

这是我参与2022首次更文挑战的第18天,活动详情查看2022首次更文挑战

目标:develop合入到master

1、git status 检查是否有未提交内容

2、git checkout develop

3、git pull

4、git rebase -i master(-i 交互模式) git rebase -i HEAD~2

这里要注意必须保留第一个pick剩下全部改成s(squash)如果将所有的pick都改为了s那就没有合并的载体了就会报如下错

保留最后一个

这时就只能使用 git rebase --continue 继续编辑或git rebase --abort 取消此次操作来解决问题才能进入下一步。

5、这里可能会出现冲突

处理冲突后git add .

git rebase --continue

或者直接使用git rebase --skip

6、输入:wq保存并退出这时出现修改message页面

7、删除所有未注释的提交信息 只剩一条自己写的例如 v1.1.0

8、git checkout master

9、git merge develop

10、如果冲突处理冲突

11、git push

\

ps: 恢复数据可能会出问题 强拉覆盖本地

git fetch --all
git reset --hard origin/develop
git pull

git rebase -i origin/master

这个命令会执行交互式rebase操作,操作对象是那些自最后一次从origin仓库拉取或者向origin推送之后的所有提交。

'edit'(使用提交,但是暂停以便进行修正)

'squash'(使用提交,但是把它与前一提交合并)

'pick'(使用提交)默认

如果指定进行'pick'操作,git会应用这个补丁,以同样的提交信息(commit message)保存提交。

\

二、pick操作

如果指定进行'pick'操作,git会应用这个补丁,以同样的提交信息(commit message)保存提交。

三、squash操作

如果指定进行'squash'操作,git会把这个提交和前一个提交合并成为一个新的提交。这会再次调用编辑器,你在里面合并这两个提交的提交信息。所以,如果你(在上一步)以如下的内容离开编辑器:

pick   fc62e55 added file_size

squash 9824bf4 fixed little thing

squash 21d80a5 added number to log

squash 76b9da6 added the apply command

squash c264051 Revert "added file_size" - not implemented correctly

你必须基于以下的提交信息创建一个新的提交信息:

This is a combination of 5 commits.

The first commit's message is:

added file_size

This is the 2nd commit message:

fixed little thing

This is the 3rd commit message:

added number to log

This is the 4th commit message:

added the apply command

This is the 5th commit message:

Revert "added file_size" - not implemented correctly

This reverts commit fc62e5543b195f18391886b9f663d5a7eca38e84.

一旦你完成对提交信息的编辑并且退出编辑器,这个新的提交及提交信息会被保存起来。

四、edit操作

如果指定进行'edit'操作,git会完成同样的工作,但是在对下一提交进行操作之前,它会返回到命令行让你对提交进行修正,或者对提交内容进行修改。

例如你想要分割一个提交,你需要对那个提交指定'edit'操作:

pick   fc62e55 added file_size

pick   9824bf4 fixed little thing

edit   21d80a5 added number to log

pick   76b9da6 added the apply command

pick   c264051 Revert "added file_size" - not implemented correctly

你会进入到命令行,重置(reset)该提交,然后创建两个(或者更多个)新提交。假设提交21d80a5修改了两个文件,file1和file2,你想把这两个修改放到不同的提交里。你可以在进入命令行之后进行如下的操作:

$ git reset HEAD^

$ git add file1

$ git commit 'first part of split commit'

$ git add file2

$ git commit 'second part of split commit'

$ git rebase --continue

现在你有6个提交了,而不是5个。

五、丢弃提交操作

交互式rebase的最后一个作用是丢弃提交。如果把一行删除而不是指定'pick'、'squash'和‘edit''中的任何一个,git会从历史中移除该提交。

\

通过git log --oneline --graph 可视化看到整个分支

如果如上图上方使用git rebase -i master 基本上不会有冲突

如果如上图下方使用git rebase -i master 基本每条都需要解决冲突

学习链接:

www.cnblogs.com/dsxniubilit…