场景1:合并分支到master时出现冲突
// 先切到master分支,pull最新代码
git checkout master
git pull
// 然后切回自己的分支,合并master分支
git checkout branch-name
git merge master
// 然后查看状态,找到both modified的文件
git status
// 选择要的部分,修改文件后add冲突文件
git add 文件路径
// 编辑commit后重新推送到远程分支
git commit -m "冲突处理"
git push
场景2:commit描述修改
// 先查看提交记录
git log
// 然后回退一个版本(版本号要选择自己提交的上一个版本)
git reset --soft 39aae32a6c016a279bd1c6684ecdfb52c0f76ad9
// 这时该版本号前的commit就消失了,然后重新编辑
git commit -m "重新编辑描述"
// 扩展延伸
--soft 只会回退掉commit的信息,可用于重新编辑commit
--mixed 会回退到add之前,可用于重新修改文件,再重新操作add文件,commit编辑
--hard 彻底回退到某个版本,源码也会变成该版本的内容
场景3:分支修改一半时,想将master最新的代码合并过来
// 先将分支修改的内容暂存
git stash
// 然后切换到master分支,拉取最新代码
git checkout master
git pull
// 再切回分支,释放暂存内容,合并代码
git checkout branch-name
git stash pop
git merge master
场景4:换了一个代码管理工具,要更换远程关联仓库
git remote set-url origin 地址
场景5:多人合作修改同一个分支,要将对方已经提交到分支的代码合并到本地分支
git fetch origin 分支名
git merge origin/分支名
场景6:使用rebase想要合并多个commit时,执行一半卡住了,显示(master|REBASE 1/3),文件也出现了冲突,怎么操作都没反应,分支也切换不了
// 中止操作就可以了
git rebase --abort
场景7:使用rebase想要合并多个commit时,因为有pull过代码,导致该分支查看提交记录时,包含了很多不属于该分支的提交记录,在使用git rebase时,记录太多没法找到自己的commit进行处理
// 只能另辟蹊径,先切回master分支,另起分支
git checkout master
git pull
git checkout -b new-branch
// 然后将旧分支改动的文件切到新建分支
git checkout old-branch ./menus/app.php
// 然后重新commit提交推送,用新的分支来创建合并请求
git commit -m "提交描述"
git push