与主仓合并
思想:创建新的分支 —— 与主仓同步 —— 加入代码
# 添加MindSpore主仓master分支
git remote add upstream https://gitee.com/mindspore/mindspore.git -t master
# 拉取MindSpore主仓master分支至本地
git fetch upstream
# 切换至Op1分支
git checkout Op1
# 本地Op1分支rebase MindSpore主仓master分支
git rebase upstream/master
# 可能需要解冲突
# 检查本地代码状态与commit信息一切正常
git status
git log
# push本地Op1分支至Op1远程分支
git push -f
在切换分支之后,添加相应文件 ,并push到相应分支中
git上传文件:先创建仓库,再上传文件
git remote add origin https://... /仓库名.git //后面改为你自己刚复制的仓库地址
git clone https://... /仓库名.git
//push操作从这一步开始
git add . //添加当前目录下的所有文件到
git commit -m '数据结构代码' //单引号内的内容为提交时的备注信息
git push origin master //master是默认分支名,这里可以根据自己需要进行修改
一些错误情况
$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Applying: ApplyPowerSign
//解决方案
git fetch upstream
git reset --hard upstream/master
$ git rebase upstream/master
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
//解决方案
git stash
git clean -d -fx
git fetch upstream
git reset --hard upstream/master
//创建新分支
git branch dev //创建dev分支
git checkout dev //切换至dev分支
Merge和Rebase区别
merge 和 rebase 都是合并两个分支的操作,都是 checkout 到某个分支上,然后把别的分支合并到该分支。(操作谁,谁不变)
使用场景
- 当我们在分支 future 上添加新功能时,直接在主分支 master 上, merge 一下 future 就可以把新功能加上了。
- 当我们在 future 上开发,此时有人改动了 master 主分支,要与主分支同步,在 future 分支上 rebase master 一下这样我们自己开发的几个 commits 就一直处在分支最后(一个分支只有一个 commits 操作 ,使用rebase)。
- 切记:不要在公共分支 master 上 Rebase !!! rebase操作之后相当于篡改历史,回退到之前操作十分麻烦
总结
1.公共分支上选择 merge (将新功能整合到 master 上)
2.功能分支上选择 rebase主分支 (和公共分支同步,把自己的提交顶到最后)
3.功能分支选择 merge 的话,如果不介意别人的操作放在自己操作前面的话也可以
4.在公共分支上不能 rebase 任何分支
5.本地和远端对应同一个 master 分支,优先使用 rebase 而不是 merge
例:本地master 和远程 master 是两个不同的分支