git 修复bug,bug分支理解 --rebase参数 --squash参数

本地操作

#先从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

5

git pull --rebase

6

è¿éåå¾çæè¿°

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

猜你喜欢

转载自blog.csdn.net/benben0729/article/details/82707301