git 常用命令 Rebase

目录

    • 场景1:一次基于 `rebase` 的代码提交
    • 场景2:`rebase`发生冲突时 ☞ 撤销rebase
    • 场景3. 员工A提PR ☞ 员工B合入PR到release ☞ 员工C revert PR ☞ 员工A 在提PR的 fix-bug分支 `rebase` origin/release ☞ rebase后修改内容没了,如何再重提这个PR呢?

git rebase origin/release    以origin/release的代码为基础变基

场景1:一次基于 rebase 的代码提交

1. git fetch
2. git checkout -b dev2 origin/dev2
3. date >> 1.txt && git add . && git commit -m "msg"       模拟业务提交
4. 期间远程release分支被合入诸多别的业务模块的代码提交
5. dev2分支往release分支提PR之前,先rebase一下
6. git fetch origin release                                拉取最新代码
7. git rebase origin/release                               执行rebase
8. git push -u origin dev2                                 push代码然后github提PR

场景2:rebase发生冲突时 ☞ 撤销rebase

git rebase --abort
git reset --hard HEAD
git reset --hard 8ec554

场景3. 员工A提PR ☞ 员工B合入PR到release ☞ 员工C revert PR ☞ 员工A 在提PR的 fix-bug分支 rebase origin/release ☞ rebase后修改内容没了,如何再重提这个PR呢?

因为git认为变化过程是原来内容→追加内容→删除内容,此时rebase时,删除动作视为最新提交所以会把本地修改给清除,如何再重提这个PR呢?

1. git reflog	                         1. 找到员工APR的那个提交542a43
2. git fetch	                         2. 拉取最新代码
3. git reset --hard origin/release       3. 本地使用远程release分支代码
4. git cherry-pick 542a43	             4.542a43内容cherry-pick过来
5. git branch -vv	                     5. 为了查看本地分支对应的远程分支的名字fix-bug
6. git push origin HEAD:fix-bug -f	     6. 把本地分支强推到远程的fix-bug上

拓展:Git常用命令汇总

你可能感兴趣的:(GIT,git)