一、项目整个的提交流程
背景:使用gitlab平台,master分支是受到保护的分支,使用两个分支,dev和master进行演示。
git pull --rebase 拉取dev的最新分支。
dev的代码写完了。
git commit -am"本次提交的内容"
git pull --rebase 拉取代码。假如有冲突,解决冲突,解决完,执行git rebase --continue。
git checkout master。切换到master分支。
git pull --rebase 拉取master的最新代码。
git checkout dev。切换回dev。
git merge master。将master代码的更改合并到dev上来。有冲突解决冲突。
git push origin dev。发布到远程的分支。
这几部操作完成之后,dev已经和origin dev的冲突解决完毕。dev和远程master 的冲突也解决完毕。现在再去gitlab提个merge request就好了。
source branch是dev target branch是master。
二、意外发生,撤销更改,回滚的操作。
git reset --hard 将工作区和暂存区全部删除
git reset --soft 暂存区的删除 但是保留了本地的(工作区)代码
git reset 版本号 回滚到某个提交
场景一:
dev已经做了更改(工作区改变了),但是没有commit(暂存区没有).
解决办法:git reset --soft
场景二:
dev的工作区和暂存区 都有了。
解决方法:本地 git reset --hard
场景三:
dev都已经push了,我想回退。
解决方法:我们想把本地和远程仓库都回退到某个版本,直接在远程server的仓库目录下,执行git reset –soft 版本号来回退。远程变得干净了。暂存区干净了。只保留的当时本地工作区的更改