本地操作
#先从release分支打一个bug分支
git checkout release
git checkout -b bug-order
#bug-order 是分支名 名字不要过长,尽量体现bug内容 不能有空白
#在bug-order修改好之后 commit
#此处要先commit 在pull或者修改之前 先pull
git add a.php b.php
git commit -m "修改xxxx"
git pull --rebase
#push 到Github
git push origin bug-order -u
测试服务器操作
#测试服务器更新代码 并切换到bug分支
git pull
git checkout bug-order
本地操作
#如果测试没问题 将bug合并到master和release
git checkout master
git merge bug-order
git checkout release
git merge bug-order
#两个分支都push 到远程仓库
git push
#删除bug分支
git branch -D bug-order
#删除远程仓库的bug分支!!!慎重操作 不要写错
git push origin :bug-order
git merge --squash dev
#将多个commit合成一个合并到当前分支
#理解 就是dev分支可能含有多个commit 如果我们正常合并到当前分支这些commit都会体现,但是有时我们并不需要这么多的commit,所以就用到了squash这个参数,这回使得在dev中的多个commit 在当前分支只体现一个
#既想合并 commits,又想保留作者的信息,这个时候我们可以尝试一下 rebase,操作步骤是这样的:
#先切换到 devel 分支(不一样咯):
git checkout devel
#变基:
git rebase -i master
#切换回目标分支:
git checkout master
#合并:
git merge devel
这里完成了第二步之后我想你应该大概知道发生了什么事了,我们在 devel 里面对照 master 进行了变基,所谓的变基其实就是找到两个分支共同的祖先,然后在当前分支上合并从共同祖先到现在的所有 commit,所以我们在第二步的时候会选择怎么处理这些 commit,然后我们就得到了一个从公共commit 到现在的单个 commit,这个时候别人讲我们这个 commit 合并到 master 也只会在 master 上留下一个 commit 记录,就像这样:
git pull
git pull --rebase
git pull --rebase
#这个命令做了以下内容:
#a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
#b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
#c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并
参考:https://liuliqiang.info/post/difference-between-merge-squash-and-rebase/
https://www.cnblogs.com/wangiqngpei557/p/6056624.html