- 例如:将gitLab 上的dev分支拉取到本地
git checkout -b dev origin/dev 在本地创建分支dev并切换到该分支 git pull origin dev 就可以把gitLab上dev分支上的内容都拉取到本地了 git pull 和 git fetch 的区别 https://blog.csdn.net/weixin_41975655/article/details/82887273 参考 https://blog.csdn.net/qq_40973353/article/details/80682891
- git如何利用分支进行多人开发
在使用git时,假如远程仓库有 dev 和 master 两个分支,master 作为一个稳定版分支,可用于直接发布产品,日常的开发则 push 到 dev 分支,那本地是不是要从 dev 分支中创建一个本地分支,然后在这个分支的 push 的动作是默认推到远程 dev 分支上?
重点:自己的开发分支永远只能从master拉取;参考 https://www.cnblogs.com/kexianting/p/8525732.html
- 克隆代码
git clone git@github.com:XX/master-dev.git #这个git路径是无效的,示例而已
- 查看所有分支
git branch --all
# 默认只有master分支,所以会看到如下两个分支
# master[本地主分支] origin/master[远程主分支]
# 新克隆下来的代码默认master和origin/master是关联的,也就是他们的代码保持同步
- 创建本地新的dev分支 并且 关联origin/dev的分支
(如果远程不存在origin/dev)git checkout -b dev ;git push origin dev # 这样远程仓库也有一个dev分支了;这个时候可以使用 git branch --set-upstream-to=origin/dev dev 和远程dev关联,这样可以直接使用git push
(如果远程已经存在origin/dev)git checkout -b dev origin/dev # 创建本地分支dev,并且和远程origin/dev分支关联,本地dev分支的初始代码和远程的dev分支代码一样;
- 在dev分支开发代码
git checkout dev # 切换到dev分支进行开发
# 开发代码之后,我们有两个选择
# 第一个:如果功能开发完成了,可以合并主分支
git checkout master # 切换到主分支
git merge dev # 把dev分支的更改和master合并
git push # 提交主分支代码远程
git checkout dev # 切换到dev远程分支
git push # 提交dev分支到远程
# 第二个:如果功能没有完成,可以直接推送
git push # 提交到dev远程分支
# 注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么
- 删除分支
- git push origin --delete dev # 删除远程dev分支,危险命令哦 # 下面两条是删除本地分支 git checkout master # 切换到master分支 git branch -d dev # 删除本地dev分支 (项目中在git上原本只有maser分支, 拉倒本地新建dev分支, 然后通过上述第二种方式将dev分支推到git服务器, git服务器上有master和dev两个分支, 一般开发是会在本地的dev分支上开发, 然后推送到git服务器上dev分支, 并且在master分支上和本地的dev分支合并, 并将本地的master分支推送到git服务器上的mater分支上, 作为发布的mater分支)
多人合作代码提交实践
- 前言:有的时候我们需要跟别人合作进行开发(使用不同的Git分支),等项目完成时,需要进行代码合并,就需要知道Git如何合并远程分支。
- b: 公共分支 ; a: 自己的分支
- git checkout -b b origin/b 在本地新建一个与远程的分支b相同(被合并的版本)的分支b :该指令的意思:创建一个本地分支,并将远程分支放到该分支里面去。
- 如果测试环境用自己的分之的操作 :
- git pull origin b 将远程代码pull到本地
- git checkout a 返回到你的分支a
- git merge b 合并分支a与分支b
- git push origin a
- 如果测试环境用公共的分之的操作 :
- git checkout master ;git pull
- git checkout a ;git merge master
- git checkout b ;git merge a
- git push origin b
- 参考 https://blog.csdn.net/DeMonliuhui/article/details/78510678