协同开发

1、引子:假如三个人共同开发同一份代码,每个人都各自安排了任务,当每个人都完成了一半的时候,提交不提交呢?

要提交,提交到dev吗,都上传了一半,这样回家拿出来的代码根本跑不起来。所以,

为每一个人创建一个分支,各自都在各自的分支上写代码,互不影响。

很短时间内大家暂时先合并一次,不然冲突太多了。但是这个分支不是dev,而是review分支,当老大看完没问题之后再合并到dev分支。

协同开发的两种方式:

方式一:创建项目合作者:

码云:

github:

方式二:创建组织,邀请成员

码云:

github:

创建完之后写代码

先创建了一个dev的分支
git branch dev
git checkout dev
git push origin dev
又创建了一个review的分支
git branch review
gir checkout review
git push origin review
创建自己的分支
git branch a
git branch b
git branch c git checkout c
git pull origin review

  假如现在有两个人在进行开发

A创建了个文件
git branch A
git checkout A
touch a.py
git add .
add commit -m 'inital'
git push origin A
ls
vim a.py #写了一些内容
git add .
add commit -m 'a功能开发完毕'
git push origin A
#现在两人都写完了,开始合并和review进行合并了
git checkout review
git pull origin review #远程的review拉下来
#合并发到review
git merge A
ls
git status
git push origin review #再次写的时候
git pull origin review
B创建了个文件
git branch B
git checkout B
touch b.py
ls
git add .
add commit -m 'b功能开发完毕'
git push origin B
ls
vim c.py #写了一些内容
git add .
add commit -m 'c开发完毕'
git push origin B
#现在两人都写完了,开始合并和review进行合并了
git checkout review
#git pull origin review #如果先没有,把远程的review拉下来
#合并发到review
git merge B
ls
git status
git push origin review #这时候的review是最新的,那么A先提交了,完了B还得拉先来再合并一次
老大看了review分支,如果OK,可以放到dev分支进行测试,如果测试没有问题了
才放到master分支。
master分支:线上的版本,永远保证线上的版本,无论是回滚到哪都是能用的

GIT忽略文件

当你提交代码的时候不要把所有的代码都提交,尤其是你自己的隐藏文件,还有pycharm自动生成的隐藏文件,

两个方式:

  手动修改:在你add的时候不要把它添加进去就行了

创建.gitignore文件

码云:

github:

  修改 :需要改一下配置文件

.gitignore

vim . gitignore

/idea

touch a.log

touch b.log

不要所有.log文件了,在编辑的时候写上*.log

一些规则

以斜杠“/”开头表示目录;

  以星号“*”通配多个字符;

  以问号“?”通配单个字符

  以方括号“[]”包含单个字符的匹配列表;

  以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

 样板:

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class # C extensions
*.so # Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST # PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec # Installer logs
pip-log.txt
pip-delete-this-directory.txt # Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/ # Translations
*.mo
*.pot # Django stuff:
*.log
.static_storage/
.media/
local_settings.py # Flask stuff:
instance/
.webassets-cache # Scrapy stuff:
.scrapy # Sphinx documentation
docs/_build/ # PyBuilder
target/ # Jupyter Notebook
.ipynb_checkpoints # pyenv
.python-version # celery beat schedule file
celerybeat-schedule # SageMath parsed files
*.sage.py # Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/ # Spyder project settings
.spyderproject
.spyproject # Rope project settings
.ropeproject # mkdocs documentation
/site # mypy
.mypy_cache/

  

GIT版本Tag

    git tag -a V0.1 -m 'version0.1'      本地创建Tag
git show v0.1 查看
git tags -n 查看本地Tag
git tag -l 'v1.*' 查看本地Tag,模糊匹配
git tag -d v0.1 删除Tag
git push origin :refs/tags/v0.2 更新远程tag
git checkout v0.1 切换tag
git fetch origin tag V1.2 git push origin 0.1
git pull origin 0.1 git clone -b v0.1 #操作示例
XXX MINGW64 ~/PycharmProjects/study (dev)
$ git tag -a V0.1 -m 'version0.1' XXX MINGW64 ~/PycharmProjects/study (dev)
$ git show v0.1
tag V0.1
Tagger: XXX <XXX@qq.com>
Date: Sun Jul 1 00:13:25 2018 +0800 version0.1 commit cc915e200275d56f8630a35043e5c973c9521233 (HEAD -> dev, tag: V0.1)
Merge: fb39758 8a7f6ea
Author: XXX <XXX@qq.com>
Date: Sat Jun 30 13:45:28 2018 +0800 merge 3.py:Merge branch 'dev' of https://gitee.com/XXX/study1 into dev XXX MINGW64 ~/PycharmProjects/study (dev)
$ git tag -n
V0.1 version0.1 XXX MINGW64 ~/PycharmProjects/study (dev)
$ git tag -l 'V*'
V0.1 $ git checkout V0.1
Note: checking out 'V0.1'. XXX MINGW64 ~/PycharmProjects/study ((V0.1))
$ git push origin V0.1
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 620 bytes | 620.00 KiB/s, done.
Total 5 (delta 2), reused 0 (delta 0)
remote: Powered by Gitee.com
To https://gitee.com/XXX/study1.git
* [new tag] V0.1 -> V0.1 XXX MINGW64 ~/PycharmProjects/study ((V0.1))
$ git pull origin V0.1
From https://gitee.com/XXX/study1
* tag V0.1 -> FETCH_HEAD
Already up to date.

  查看tag:

github或码云协同开发的更多相关文章

  1. Git--代码托管/协同开发

    Git--代码托管 我爱写代码,公司写,家里写,如果每天来回带一个U盘拷贝着实麻烦,Git有没有类似于云盘似得东西可以进行数据同步呢?答案肯定是有. GitHub,一个基于Git实现的代码托管的平台, ...

  2. API Studio 5.1.2 版本更新:加入全局搜索、支持批量测试API测试用例、读取代码注解生成文档支持Github与码云等

    最近在EOLINKER的开发任务繁重,许久在博客园没有更新产品动态了,经过这些日子,EOLINKER又有了长足的进步,增加了更多易用的功能,比如加入全局搜索.支持批量测试API测试用例.读取代码注解生 ...

  3. 我把代码开源、托管到了GitHub、码云

    前言 学习了那么多知识点,写了那么多代码,一直都没有时间整理,之前都是新学一个知识点就在同一个工程项目中进行实践测试,导致这个工程越来越臃肿.越来越乱,连我自己都快看不懂了... 这段时间整理了部分代 ...

  4. 将本地项目或代码上传到别人GitHub(码云)的远程分支上

    今天碰到了这样一个问题,折腾了半天,就是将自己本地代码上传到人家的远程分支上. 首先要做的就是先将人家的项目克隆到本地:git clone + 项目地址 然后进入项目目录:cd + 已克隆好的项目目录 ...

  5. Git同步更新操作GitHub和码云仓库上面的代码

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

  6. 用git上传项目到GitHub或者码云全过程

    用git上传项目到GitHub或者码云全过程 1. 会生成一个隐藏文件夹".git".这是一个不可删文件,因为暂存区和历史区还有一些其他的信息都在这里,删掉就不是一个完整的仓库了 ...

  7. GitHub的多人协同开发配置

    GitHub For Windows 下载地址:https://windows.github.com/ 基本的注册登录就不细讲了. 在源代码管理上,最重要的就是仓库了.仓库这一概念很容易理解,所谓仓库 ...

  8. git与svn与github与码云的区别

    1.git与github(https://www.oschina.net/)的区别 Git(https://git-scm.com/)是一个版本控制工具 github是一个用git做版本控制的项目托管 ...

  9. GitHub和码云gitee及远程仓库管理

    目录 备注: 知识点 GitHub 码云(gitee.com) gitee的使用 本地版本库关联多个远程库 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢 ...

随机推荐

  1. jQuery Growl插件(消息提醒)

    ps:菜鸟教程 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <s ...

  2. Javascript php 异常捕获

    JavaScript try 语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. JavaScript 语句 try 和 cat ...

  3. poj--2299(树状数组+离散化)

    一.离散化: https://www.cnblogs.com/2018zxy/p/10104393.html 二.逆序数 AC代码: #include<iostream> #include ...

  4. vue的computed属性

    vue的computed属性要注意的两个地方,1,必须有return,2,使用属性不用括号 <div> <input type="text" v-model=&q ...

  5. Clion 教程书写Hello World,C语言开发;Clion 的C语言开发

    一.编译器安装 二.项目搭建 1.新建项目 2.项目类型选择(双红圈是项目名称,可以修改) 3.点击create,自动生成项目. 4.运行项目

  6. MySQL 安装与使用(三)

    操作系统:CentOS release 5.10 (Final) MySQL版本:5.1.72-community 占位学习与编辑中……

  7. GDAL读写矢量文件——Python

    在Python中使用OGR时,先要导入OGR库,如果需要对中文的支持,还需要导入GDAL库,具体代码如下.Python创建的shp结果如图1所示. 图1 Python创建矢量结果 #-*- codin ...

  8. Hadoop-2.8.0分布式安装手册

    目录 目录 1 1. 前言 3 2. 特性介绍 3 3. 部署 5 3.1. 机器列表 5 3.2. 主机名 5 3.2.1. 临时修改主机名 6 3.2.2. 永久修改主机名 6 3.3. 免密码登 ...

  9. Eclipse怎么全局搜索和替换(整个项目)

    我们用Eclipse编程,有时候需要将整个项目的某个字符串替换成其他的.那么我们该怎么操作呢?请接着往下看! 一,我们首先打开Eclipse,单击要替换字符串的项目 二,按下组合键:ctrl + H, ...

  10. java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...