目录
以前的做法
使用fork和git rebase
fork
git rebase
提交mr(Merge Request)
昨天第一次使用fork和git rebase,记录下。。。
以前的做法
以前习惯做法都是clone公司原有项目到本地,然后自己checkout一个新的分支(如dev)进行开发,开发测试完成后,会有组长负责去merge我的dev分支到master。
当然在这个需求的开发期间可能有无数次的git commit和git push。
使用git log可以看到自己在做这个需求期间提交了n次。。。
使用fork和git rebase
fork
选择需要fork的项目,点击【fork】,大约1分钟左右的时间,等fork完了以后就会看到自己名下已经有了该项目
然后就是常规操作了,clone自己名下的项目到本地,默认是master分支,然后自己根据当前需求checkout一个新的分支进行需求开发
git clone http://git.xxx.cn/xxx.xie/goutil.git
// 例如:新开一个alert分支,进行告警相关功能开发
git checkout -b alert
然后就在alert分支开发---测试---提交
// add修改过的文件
git add main.go
// 提交修改的msg
git commit -am "xxx"
// 列出远程项目url
git remote -v
// 设置当前分支的上游
git remote add upstream http://git.xxx.cn/xxx.xie/ops.git
// 提交alert分支的修改
git push origin lert
如果已经设置过upstream,想要修改之前的upstream
git remote set-url upstream http://git.xxx.cn/rd/txxe.git
git rebase
合并之前的多次提交。
// 我目前在alert分支,设置master作为rebase。这里还可以设置需要合并前多少次的提交
// git rebase -i master~1 ,表示合并前2次的提交
// -i 代表进入交互模式
// 第一步:
git rebase -i master
// 第二步
// 进入交互模式后,会出现最近几次的pick,把pick修改为s
// 参考https://www.codercto.com/a/45325.html
//
// 第三步:
wq 保存后退出
// 第四步:
修改 需要提交的msg
// 第五步:
wq 保存退出
最后出现类似的信息,说明rebase成功。
Successfully rebased and updated refs/heads/alert.
提交mr(Merge Request)
在gitlab下找到需要提交mr的项目的分支(我的alert分支),
选择对应的项目和分支
然后就是等待你的mr被处理,处理完了以后就merge到自己名下的master分支。
首先clone fork出来的仓库到本地
git clone git@github.com:123/456.git
在 fork 的代码库中添加上游代码库的 remote 源
git remote add upstream git@github.com:789/456.git
获取原始仓库分支和对应的提交
git fetch upstream
在本地实现与upstream的同步
git rebase upstream/master
成功的话提示如下:
$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to upstream/master.
推送自己的本地仓库到自己的远程仓库
git push