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这台主机上,默认名字相同的分支,即mastererror:**************    #报错了

这是因为老郭已经提前提交了一次,现在小张多应的版本不是最新的,每次提交都要确保对应的最新版本

从远程服务器拉取版本

小张知道原因后:

  $ 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,

  文件内容2222122222222

这个时候小张也在开发这个test.txt,

  文件内容aaaaaaaaa

如果中梁开发得快,先push了,这个时候小张再push就会报冲突的错误,就算pull也拉不下来。

  E:\work\test>git pushTo 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 behindhint: 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 pullremote: 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/test1ada640..dbb924c  master     -> origin/mastererror: Your local changes to the following files would be overwritten by merge:test.txtPlease commit your changes or stash them before you merge.AbortingUpdating 1ada640..dbb924c

在整个协作开发时,有时候会出现冲突。通常都是由于开发人员分工不明确导致的,所以如果出现这种情况,需要两个程序员协商解决。
另外小张可以先

    $ git stash #本地的所有修改就都被暂时存储起来 。是用git stash list可以看到保存的信息Saved working directory and index state WIP on master: 1ada640 '222'$ git stash liststash@{0}: WIP on master: 1ada640 '222'    #其中stash@{0}就是刚才修改保存的标记$ git pull #现在就能pull下来了$ git stash pop stash@{0}    #还原暂存的内容Auto-merging test.txtCONFLICT (content): Merge conflict in test.txt #系统自动合并修改的内容,但是其中有冲突,需要手动解决。

打开冲突的文件test.txt

    文件内容<<<<<<< Updated upstream2222122222222=======aaaaaaaaa>>>>>>> Stashed changes

系统不知道要保留中梁的,还是报错小张的
这个时候经过协商,把文件改为

  文件内容222aaa222

然后小张:

  $ 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 上点击 编辑(小笔)解决冲突后合并。

转载于:https://www.cnblogs.com/CGCong/p/9375774.html

git的团队协作开发相关推荐

  1. 如何使用Git进行团队协作开发

    点击上方蓝色"飞雪无情"关注我,设个星标,第一时间看文章 在团队协作开发中,Git已经越来越流行,如果你不懂Git,那么就很难参与到团队的协作开发中. 除了公司内部的协作开发,如果 ...

  2. Git跨团队协作和Win7凭据管理器

    1 简介 Git的一大优点就是可以整合全世界的开发人员,当然在公司内部,使用Git多是作为版本管理工具,作为团队内协作并行开发的工作,而Git的另外一个极为大的应用,便是跨团队协作,一种可能的情形是单 ...

  3. 都2021年了,还不会使用GitHub创建、推送、拉取、克隆远程库、团队协作开发?

    1 对自己的远程库操作 1.1 在GitHub上创建远程库 1.2 推送本地库至远程库 1.3 拉取远程库到本地库 1.4 克隆远程仓库到本地 2 对别人的远程库两种操作方式 2.1 使用GitHub ...

  4. 团队开发-CodePlex的工作模式和团队协作开发

    CodePlex的工作模式和团队协作开发 在CodePlex上合作开发开源项目,实际上就是一个协同开发的过程. 在CodePlex建立了一个Project后,在TFS(Team Foundation ...

  5. Git多人协作开发流程

    Git多人协作开发流程 一.新建仓库 1.仓库名称:total 2.路径 3.仓库介绍:这是张三.李四.王五等多人的公共仓库,他们自身的文件夹分别代表他们自己的本地代码. 二.命令行操作执行 1.gi ...

  6. 团队协作开发工具Git超详细讲解(工作必会)

    目录 一.Git常用命令 二.Git分支操作 1.什么是分支? 2.关于分支的操作 三.Git团队协作机制 四.GitHub操作 五.IDEA集成Git 六.IDEA集成GitHub 七.国内代码托管 ...

  7. 【Git】团队协作(终于学会了)

    前言 目前我写过有关Git的文章: <[闲谈]Git连接GitHub> <[Git]什么破玩意,pull不下来东西,不想用了> <[Git]删除操作> 说来也惭愧, ...

  8. idea整合gitte团队协作开发项目

    目录 1.相同步骤 1.1下载gitte 1.2.安装gitte 1.3注册一个gitte账号 2.不同步骤 2.1项目发起者 2.1.1新建远程仓库 2.1.2新建项目文件 2.1.3idea新建项 ...

  9. 一小时精通SVN版本控制 之五 团队协作开发

    假设一个团队有一个项目经理,两个开发人员协作开发一个项目: 第一步:由项目经理创建项目 1.在服务端新建仓库用于存放项目. 2.在myeclipse中创建项目:选中项目右键->team-> ...

最新文章

  1. awk sed (1)====积累取ip以及sed 查找替换
  2. Python+Appium自动化测试之toast定位
  3. Dubbo的核心玩法三
  4. WinSock学习笔记
  5. 关于最近公司裁员和加班的思考
  6. [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫
  7. 聚合报告90%参数说明
  8. Abp vnext 特征(Features)
  9. NC生成单据PK主键
  10. Win11更改系统文件夹的默认保存位置方法分享
  11. 《普陀区加快发展网络安全产业实施意见》的通知
  12. MyBatis级联一对一与一对多
  13. 中国科学院深圳先进技术研究院合成所赵国屏研究员课题组2022年招聘启事
  14. echarts做中国地图分布
  15. 【面试题集 —— No.01】常见图片格式BMP、JPG/JPEG、PNG、GIF、TIFF、SVG的区别
  16. CPU中虚拟地址、逻辑地址(有效地址)、线性地址、物理地址
  17. 【视频理解论文】——TSM:Temporal Shift Module for Efficient Video Understanding
  18. 动态规划——背包问题(01背包问题)
  19. 软件定义存储的头部厂商也来了,XSKY 星辰天合加入龙蜥社区
  20. (转)图解Intel电脑组装过程

热门文章

  1. _​_​i​n​t​6​4​ ​与​l​o​n​g​ ​l​o​n​g​ ​i​n​t
  2. Linux五种IO模型性能分析
  3. 图像拼接 Image-based only, no GPS/IMU data
  4. Haar小波变换的快速实现
  5. python 之 分割参数getopt
  6. pyV8不支持dom操作,关于PyV8的支持DOM的疑问
  7. Web项目开发性能优化解决方案
  8. 一步一步写二叉查找树
  9. CynosDB技术详解——存储集群管理【文末有福利】
  10. MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法