协同开发

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. 2019.01.08 codeforces 1009F. Dominant Indices(长链剖分)

    传送门 长链剖分模板题. 题意:给出一棵树,设fi,jf_{i,j}fi,j​表示iii的子树中距离点iii距离为jjj的点的个数,现在对于每个点iii要求出使得fif_ifi​取得最大值的那个jjj ...

  2. 通过html文件生成PDF文件

    /// <summary> /// 获取html内容,转成PDF(注册) /// </summary> public void DownloadPDFByHTML(string ...

  3. 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别(转)

    出处:https://www.baidu.com/link?url=QjboallwNm_jxcL3fHG57wEakiBfAs_3-TChTGu1eBXstlHEsGBc-NDA7AKTqsiroB ...

  4. Amaze UI 云适配

    Amaze UI  云适配 陈本峰  一中,中科大 香港科大

  5. 如何在MYSQL下所有指定数据库名下执行SQL

    mysql下用户库比较多,都有统一的命名格式,希望在这些所有用户库执行脚本,更新数据,或者查询数据 可以采用以下存储过程实现 DROP PROCEDURE IF EXISTS `sp_execalld ...

  6. java学习3创建学生属性:学号、姓名、电话 完全实现对象集合的增删改查。(控制台来做)

    首先创建一个student类其中包括get,set与构造函数 /** * */package work2; /** * @author Administrator * */public final c ...

  7. 20155205 信息安全技术第二次实验 Windows口令破解

    20155205 信息安全技术第二次实验 Windows口令破解 实验原理 一.口令破解方法 口令破解主要有两种方法:字典破解和暴力破解. 字典破解是指通过破解者对管理员的了解,猜测其可能使用某些信息 ...

  8. 通过pip安装套件

    pip3 install requests pip3 install BeautifulSoup4   还需要使用jupyter: pip3 install jupyter 打开jupyterbook ...

  9. Mapnik

    Downloads Latest Release The latest release is Mapnik v3.0.22.最新版本是Mapnik v3.0.22. Mapnik 3.0.22 Rel ...

  10. Codeforces Round #540 (Div. 3)--1118D2 - Coffee and Coursework (Hard Version)

    https://codeforces.com/contest/1118/problem/D2 和easy version的主要区别是,数据增加了. easy version采用的是线性查找,效率低 在 ...