流程示意
获取项目代码:
- 在gitlab 网页端 fork(派生) 项目到个人私有库
- 克隆到本地:
git clone https://git.XXXXX/XXXX/sam.git #本地仓库项目
- 把上游仓库地址加入到本地:
#进入项目目录
git remote -v # 查看本地项目仓库列表
git remote add trunk https://git.XXXXX/XXXX/sam.git #添加上游仓库(项目仓库)
git remote -v: #再次检查是否加入到本地。
代码提交
注:git push -f 命令只可以在fork 本地项目操作,不允许在上游项目进行push -f 操作
- 根据功能/开发任务/BUG 创建分支,myTask 根据功能代号命名
git checkout -b myTask #根据当前分支创建新的分支
git push origin myTask #把本地分支提交到远程
- 拉取上游最新代码(拉去代码的时候,项目分支不要有本地提交,否则rebase 后可能会把本地提交作为未提交重新提交)
git fetch trunk #拉去上游代码
git rebase trunk/master #合并上游代码
git push 提交上游代码
3.本地开发提交
git status #查看文件修改状态
git add . #添加文件
git commit -m "完成了XXX"
git push
4.完成本地开发
5.合并本地提交
- 查看提交列表
git log
- rebase 提交
git rebase -i HEAD~2 : #2代表提交的数量,合并前面2次提交
-
命令完成后会出现vim 编辑框,对编辑框进行调整
-
把需要合并的提交的pick 调整为s
-
退出保存
-
保存退出后会在出现新的vim 编辑框,用于提交说明的修改
-
修改说明文字,把几段合成一段
-
强制提交本地
git push -f
-
在网页端操作mr
-
发起MR
-
创建,指派人(assign to) 可以选择自己。如果自己没有主干合并权限,指标给拥有主干合并权限的人员
-
合并
-
主干操作批准
-
完成代码。 可以把这个本地分支删除。
如果发现提交的MR 出现冲突
- 隐藏本地提交
git stash #隐藏本地提交
- 撤回提交
git reset --soft XXXX #XXX 是git 版本号码
git push -f #回退版本更新到云端
- 重新更新上游代码
git fetch trunk #拉去上游代码
git rebase trunk/master #合并上游代码
git push 提交上游代码
- 显示本地修改
git pop #隐藏本地提交
如果发现修改文件忘记切换到新分支
-
如果代码已经提交,需要撤回代码,参考上一个问题
-
隐藏本地提交
git stash #隐藏本地提交
- 操作切换分支
git checkout -b myTask #根据当前分支创建新的分支
git push origin myTask #把本地分支提交到远程
- 重新拉取本地修改
git stash apply #重新拉取本地修改
其他常用
git stash #隐藏本地修改
git stash pop #显示本地修改
git stash apply #拉取本地修改
# 修改了本地,但是发现不是需要的分支,先git stash,操作切换分支,然后再git stash apply
git reset HARD 回退版本
git branch -d xxx #删除本地分支