这是我参与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 基本每条都需要解决冲突
学习链接: