git的团队协作开发
title: git的团队协作开发
date: 2018-04-24 14:00:03
tags: [git]
项目负责人创建组织架构
在控制面板中点击组织按钮,添加组织,在这里可以把组织理解为一个公司
添加成功后,进入刚刚新建的组织
邀请他人加入----相当于公司成员
组织团队可以进行分组,默认的Owners是管理组
项目负责人创建新的仓库
创建新的仓库。
打勾 该仓库为私有的。
创建仓库。
创建成功后,项目负责人下载git后,在需要上传的文件夹中右键选中 Git Bash Here
依次运行:
git init #初始化
git add . #添加到本地仓库 . 表示全部当前文件夹中的所有文件和目录
git commit -m "first commit" #添加后生效的必须提交 -m 后面的是提交的备注
git remote add origin http://10.92.216.250:3000/test/test.git #连接我们新建的远程仓库
git push -u origin master #将本地仓库的所有推送到远程仓库,需要输入帐号密码
创建新的团队
根据需要设置权限
进入刚刚新建的团队,添加成员和相应的仓库
分工协作之单支作业
小张:
git clone http://10.92.216.250:3000/test/test.git
#直接将项目克隆到本地,可在D盘中运行该命令,成功后会出现一个test文件夹,然后就可以进行常规操作了
本地常规操作
小张在这个项目--test文件夹中新增了一个index.html文件
在该项目中右键选中 Git Bash Here
git add index.html #将index.html添加到本地仓库中
git status #这个是查看有多少添加但还没提交的文件
git commit -m '小张完成了index.html' #提交到本地仓库
上面的过程的无限进行,添加,提交。注意这些操作都是在本地仓库进行的
快下班了,小张准备把今天的开发全部推送到服务器
$ git remote #提交之前最好先看看服务器叫什么
origin #这个origin就是使用git remote得到的远程服务器的名称
$ git push origin master #将本地master推送到origin这台主机上,默认名字相同的分支,即master
window 删除警告
在使用git add . 命令时,出现如下提示:
warning: LF will be replaced by CRLF in XXXXX
意思是在XXXXX文件中,LF(换行,Line Feed)将会被CRLF(回车换行,CarriageReturn)替代。这是因为在windows中换行符为CRLF,而在linux下的换行符为LF。
rm -rf .git # 删除.git
git config --global core.autocrlf false #禁用自动转换
git init
git add .
忽略提交文件
在开发中,有时候git根目录下有一些不需要add的文件或目录,可以在根目录添加一个 ".gitignore"文件
/mtk/ #过滤整个文件夹
*.zip #过滤所有.zip文件
/mtk/do.c #过滤某个具体文件
echo "*.class" >> .gitignore #用命令行排除以.class结尾的文件
多人的时候
第二天老郭也来开发这个项目:
git clone http://10.92.216.250:3000/test/test.git
#直接将项目克隆到本地,可在D盘中运行该命令,成功后会出现一个test文件夹,然后就可以进行常规操作了
取得最新的项目,老郭看到小张已经把index.html开发了。他就负责开发admin.html,这个时候小张也在开发index.css
老郭开发完admin.html后
git add admin.html #将index.html添加到老郭的本地仓库中$
git status #这个是查看有多少添加但还没提交的文件
git commit -m '老郭完成了admin.html' #提交到本地仓库
git remote #提交之前最好先看看服务器叫什么
git push origin master #将本地master推送到origin这台主机上,默认名字相同的分支,即master
这个时候小张的index.css也开发完成了:
$ git add index.css
$ git status #
$ git commit -m '小张完成了index.css' #提交到本地仓库
$ git remote #提交之前最好先看看服务器叫什么
$ git push origin master #将本地master推送到origin这台主机上,默认名字相同的分支,即master
error:************** #报错了
这是因为老郭已经提前提交了一次,现在小张多应的版本不是最新的,每次提交都要确保对应的最新版本
从远程服务器拉取版本
小张知道原因后:
$ git pull #将远程服务器中的最新版本拉下来,没有文件冲突肯定就成功的,有冲突后面再说
$ git push origin master #现在小张就提交成功了
以后小张也学聪明了,不过有几个开发人员,反正每次push之前先pull最新的下来,然后再push
在小张push成功后,如果老郭又要push也需要先pull最新的下来,另外每次开发之前最好也pull一次,这样
就可以在最新版本中开发,也就是开发前开发后都要pull
解决冲突
现在中梁也来开发这个项目了
git clone http://10.92.216.250:3000/test/test.git
#直接将项目克隆到本地,可在D盘中运行该命令,成功后会出现一个test文件夹,然后就可以进行常规操作了
中梁开发了test.txt,
文件内容
2222122
222
222
这个时候小张也在开发这个test.txt,
文件内容
aaa
aaa
aaa
如果中梁开发得快,先push了,这个时候小张再push就会报冲突的错误,就算pull也拉不下来。
E:\work\test>git push
To http://10.92.216.250:3000/test/test.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'http://10.92.216.250:3000/test/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
E:\work\test>git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From http://10.92.216.250:3000/test/test
1ada640..dbb924c master -> origin/master
error: Your local changes to the following files would be overwritten by merge:
test.txt
Please commit your changes or stash them before you merge.
Aborting
Updating 1ada640..dbb924c
在整个协作开发时,有时候会出现冲突。通常都是由于开发人员分工不明确导致的,所以如果出现这种情况,需要两个程序员协商解决。
另外小张可以先
$ git stash #本地的所有修改就都被暂时存储起来 。是用git stash list可以看到保存的信息
Saved working directory and index state WIP on master: 1ada640 '222'
$ git stash list
stash@{0}: WIP on master: 1ada640 '222' #其中stash@{0}就是刚才修改保存的标记
$ git pull #现在就能pull下来了
$ git stash pop stash@{0} #还原暂存的内容
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt #系统自动合并修改的内容,但是其中有冲突,需要手动解决。
打开冲突的文件test.txt
文件内容
<<<<<<< Updated upstream
2222122
222
222
=======
aaa
aaa
aaa
>>>>>>> Stashed changes
系统不知道要保留中梁的,还是报错小张的
这个时候经过协商,把文件改为
文件内容
222
aaa
222
然后小张:
$ git add test.txt
$ git commit -m '合并了test文件内容'
$ git push origin master
现在不管是老,中,少三人还是更多的开发者,都可以按照这个流程完成所有开发
分工协作之多分支
在之前的开发中,适用于小团队,如果大团队就需要多分支来管理。
分支的基本操作
分支的基本操作
$ git branch #查看分支
* master #有*的就是当前分支
$ git branch test #创建test分支
$ git checkout test #切换到test分支,然后可以在该分支进行常规的开发和操作,
$ git checkout -b test #创建并切换分支
$ touch test2.txt #创建一个test2的文件夹
$ git add test2.txt
$ git commit -m '小张在新分支test中创建了一个text2.txt文件'
$ git push origin test #注意,这里是把本地的test分支推送到origin远程主机上,这里是后面省略了 (:test)
$ git checkout master #切换到主分区
$ git merge test #合并指定分支到当前分支
$ git branch -d test #删除test分支
git推送本地分支到远程分支
场景
有时候我们开发需要开一个分支,这样可以有效的并行开发.
开分支有两种方式:
一种是在远程开好分支,本地直接拉下来;
一种是本地开好分支,推送到远程.
远程先开好分支然后拉到本地
git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到本地
本地先开好分支然后推送到远程
$ git checkout -b feature-branch //创建并切换到分支feature-branch
$ git push origin feature-branch:feature-branch //推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)
分支管理
这波操作后gogs 上仓库就有新的test分支了
项目管理员可以在仓库设置中->管理分支->保护分支->把给主分支开启保护
其他人可以在其他分支中创建合并请求
该仓库管理团队的成员可以点击合并进行合并,有冲突也可以在gogs 上点击 编辑(小笔)解决冲突后合并。
git的团队协作开发的更多相关文章
- 图文详解如何利用Git+Github进行团队协作开发
团队协作开发中,大部分都会用到版本控制软件,比如Git.Svn等.本文将通过一个实例,详细讲解在真实的工作环境中,一个团队应该如何利用Git+Github进行协作开发,即详解Git工作流程.并就其中比 ...
- 利用Team@OSC进行团队协作开发平台
利用Team@OSC进行团队协作开发平台 Team@OSC介绍 Team@OSC 是一个团队协作开发平台,轻松管理轻量级团队.代码运行平台(PaaS).代码质量检查应有尽有. 链接:https://t ...
- 利用Git进行团队协作
前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...
- 零基础ASP.NET Core WebAPI团队协作开发
零基础ASP.NET Core WebAPI团队协作开发 相信大家对“前后端分离”和“微服务”这两个词应该是耳熟能详了.网上也有很多介绍这方面的文章,写的都很好.我这里提这个是因为接下来我要分享的内容 ...
- Postman团队协作开发
介绍 Postman是一款强大的API开发调试软件,它跨平台(真正跨平台,支持linux/mac os/windows),同时还提供浏览器插件,可以说是一个良心软件, 今天主要说一下Postman团队 ...
- Git 多人协作开发的过程
Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...
- Git教程Git多人协作开发
Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...
- 利用GitHub来进行团队协作开发项目
首先: 1.项目组长要在GitHub创建一个仓库 2.组长git clone仓库地址到本地 3.组长在本地克隆到的项目里面创建一个Django项目 4.在当前项目下进行git add以及git ...
- 开发环境之git:团队协作git工作流与常用命令
此篇文章只是一篇傻瓜式的,记录工作中比较规范且常见的一个git工作流需要用到的命令,让你可以快速的开始工作.而不是一些长篇大论的理论知识,如果你有用过sourcetree或者其它图形化工具,结合你正在 ...
随机推荐
- 峰Redis学习(1)Redis简介和安装
是从博客:http://blog.java1234.com/blog/articles/310.html参考过来的: 第一节:Redis 简介 为什么需要NoSQL,主要应对以下问题,传统关系型数据库 ...
- [转]截图软件分享 - Snipaste
http://chromecj.com/software/2018-10/1538.html https://zh.snipaste.com/download.html
- Scrapy学习篇(二)之常用命令行工具
简介 Scrapy是通过Scrapy命令行工具进行控制的,包括创建新的项目,爬虫的启动,相关的设置,Scrapy提供了两种内置的命令,分别是全局命令和项目命令,顾名思义,全局命令就是在任意位置都可以执 ...
- 00010 - cut选取命令详解
定义 正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的.cut是以每一行为一个处理对象的,这种机制和sed是一样的 剪切依据 cut命令主要是接受三个定位方法: 第一,字节(by ...
- ip route rule 路由策略 高级路由 捆绑 网桥
http://lwfs.net/2005/11/28/10/ #!/bin/bash IP0= IP1= GW0= GW1= NET0= NET1= DEV0=eth0 DEV1=eth1 # com ...
- C#存储过程中return参数
//1 连接字符串 string connectionString = "server=127.0.0.1;integrated security=true;database=MSPetSh ...
- mysql中min和max查询优化
mysql max() 函数的需扫描where条件过滤后的所有行: 在测试环境中重现: 测试版本:Server version: 5.1.58-log MySQL Community ...
- 《Linux 性能及调优指南》2.4 基准工具
翻译:飞哥 (http://hi.baidu.com/imlidapeng) 版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明. 原文名称:<Linux Performance a ...
- asp.net网站中增删文件夹会导致Session或cache等等丢失
因为这会导致网站资源本身重新加载. 如果要改变文件和文件夹,一般应该是对 app_data 下进行操作.
- 使用路由和远程访问服务为Hyper-V中虚拟机实现NAT上网
众所周知,在微软的Hyper-V环境中的网络环境中没有VMware Workstation中的NAT功能,所以Hyper-V环境中虚拟机上网一般情况下需要通过设置为外部网络方可访问网络,当然也可设置为 ...