Git相关、Gitee多人协同开发
Git相关
1.介绍
是一个具有版本控制的软件,控制开发的项目代码,具有集群化、多分支的功能
2.对于程序员的作用
- 协同开发
- 解决代码合并过程中冲突
- 代码版本管理
3.git 与 svn 比较
svn :集成式管理
git: 分布式管理
4.安装
1.直接去官网下载
https://git-scm.com/
根据自己系统选择
2.下载完成后,运行安装软件,一路默认下去,完成安装(安装路径自己看着来)
3.cmd进去输入git version 看一下确实安装好了没
5.工作原理
三个工作区
工作区 存放文件的地方
暂存区 工作区的变更,提交到暂存区
版本库 把暂存区的内容提交到版本库进行管理
在工作区中对文件进行增删改查后,会被git监控到,需要我们提交文件到暂存区
git config --global user.name "your username"
6.使用
1.配置作者名邮箱
1.在桌面空白处右键点击:Git Bash Here,打开git操作页面
2.git config --global user.name "your username"
3.git config --global user.email "your email address"
4.查询是否设置成功
git config --list --global
2.常用命令
1.开始管理一个文件夹
在文件夹内空白处键点击:Git Bash Here,打开git操作页面,
输入git init 即可
当然也可以 git init 文件夹名 就会创一个文件夹并且进去管理
2.查看文件变化,可以看工作区和暂存区
仓库下敲
git status
看到有三种颜色
-红色:工作区变化了,但是没有提交到暂存区
-绿色:已经提交到暂存区,没有提交到版本库
-没有额外颜色:所有东西都在版本库中了[所有文件都被git管理起来了]
3.把工作区的变更提交到暂存区
git add 文件夹
git add . # 所有的
4.把暂存区提交到版本库
git commit -m '注释!' # 注释一定要写哦!解释自己这一步干了啥
5.查看版本库
git log
git reflog # 这个更精简一些,唯一码显示前7位

3.版本相关命令
1.工作区拉回未变动区(红变无色)
-增加的内容,删除
git checkout .
git checkout 文件名
2.暂存区拉回工作区(绿变红)
git reset HEAD
3.从版本仓库还原
只要版本库里有,都可以还原
git reset --hard 版本号
一句话:
只要版本库里存了,就能还原,相当于游戏存档,在该存档点,你是什么状态,身上有啥,或者身上没啥,都是一个切实的状态,就可以随时跳到这个状态上
4.其他的一些命令
查看时间点之前|之后的日志:
>: git log --after 2018-6-1
>: git log --before 2018-6-1
>: git reflog --after 2018-6-1
>: git reflog --before 2018-6-1
查看指定开发者日志
>: git log --author author_name
>: git reflog --author author_name
回滚到指定版本:
回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~
5.忽略文件
项目中,有些文件,或文件夹不想被git管理
步骤
-1 在仓库目录下 .git 所在目录下 新建 .gitignore
-2 在里面写忽略文件
mode_models
.idea
*.pyc
*.log
-3 写的就会被忽略
-4 已经被管理过的不会被忽略!!!
# 忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
# 可以指定例外
6.git分支
为啥要有分支?
因为一般开发是分段式敏捷开发,我们开发完一个功能后代码测试通过后想让甲方看到,就会上传到代码仓库,甲方就可以拉下来看,但是我们不会根据主分支继续开发,万一途中出问题那相当于整个项目都跑不起来,不好,于是就有了分支开发,基于主干而衍生出的支干。
我们都在开发分支开发,如果又完成了一个功能,就合并到主分支
分支操作
-查看分支:
git branch # * 和绿色表示你当前所在的分支,查看本地分支
-创建
-git branch dev
-切换分支
- git checkout dev
-删除分支
-git branch -d dev # 在其他分支上才能删它
-合并分支:
-把dev合并进master
-先来到master分支:git branch checkout master
-执行合并命令:git merge dev # 把dev合并到我(master)身上
# 分支合并可能会出冲突
我们来举个例吧,演示下
1.先进入master主分支
2.然后给1.txt第一行新增点内容
3.进行add commit 提交,生成一个版本
4.切到dev分支
5.然后发现1.txt没有了我们前面新增的内容
6.我们继续给1.txt第一行新增点内容
7.再次进行add commit 提交,生成一个版本
8.切回master主分支
9.进行分支合并,把dev合并到master来
10.窗口提示冲突,要我们去解决
11.打开1.txt,发现有如下文字
<<<<<<< HEAD
我在master中给2.txt增加了内容
=======
我在dev中再次给2.txt增加了一句话
>>>>>>> dev
7.远程仓库
一般国内都是用gitee ,公司多用gitlab
gitlab的搭建过程:https://zhuanlan.zhihu.com/p/413217715
Gitee远程仓库使用
1.去Gitee上创建一个空仓库,有的模板能点,不过一般建议空仓库
2.一般不用根据gitee的推荐来创建一个被管理的文件夹,我们自己准备
3.配置一个远程仓库目标,地址就是我们gitee仓库的
git remote add 远程仓库目标名字 远程仓库地址
git remote 查看现有的远程仓库目标名
4.把现有的分支版本上传到远程仓库目标去
git push 远程仓库目标名 分支名
5.输入下gitee用户名密码即可
使用ssh方式链接——公司常用
1.参考gitee指导文档https://gitee.com/help/articles/4181#article-header0
2.去cmd或者git的命令页面输入
ssh-keygen -t ed25519 -C "你自己的邮箱"
3.一路回车
4.去C盘用户/.ssh文件夹找到公钥私钥
5.后缀是.pub的是公钥,要上传给gitee
6.在gitee上传了自己的公钥后,复制一下远程仓库的ssh地址
7.去git命令下删除老的remote 新建一个,远程仓库地址绑定就不再是http的而是ssh的
8.第一次用私钥要打一个yes,后续就不用了
多人协同开发
目前Gitee对于多人协同开发,免费版本支持最高3个人协同
[仓库管理员]创建了仓库能添加其他协同人员,把张三李四设置为该仓库的开发者,设置完成后,在张三李四的仓库中就能看到这个项目了
1.拉取代码流程
1.从远程仓库克隆下来
git clone ssh地址
2.使用pycharm打开,配置好解释器,安装依赖
3.开发代码,开发完又推上远程仓库
2.协同开发冲突
1.多人在同一分支开发
如果有人先改了代码然后提交了,后面的人再想推上远程仓库,就有可能报错
解决冲突 冲突的 箭头去掉,阅读代码,选择保留或删除别人或自己的代码,再提交
删除别人代码要和别人说一下
如果别人写的快提交的快,我们就勤pull拉代码,尽量减少间隔版本,缩小出现冲突的概率
报错样式:
会显示在文件中
<<<<<<< HEAD 我的代码
print('123')
======= 别人的代码
print('222')
>>>>>>> 版本号
2.分支合并出现冲突
比如说张三是被管理员添加的开发者
他拉了v1版本的dev分支代码下来,自己捣鼓
然后他捣鼓期间,管理员动了两个版本并推上了远程仓库,也就是现在远程仓库是v3版本
这时候因为张三想推代码上去,但是他自己版本还是v1,他是推不上去的,必须git pull 远程仓库目标名 master 拉到最新版本,才能推。
这个拉是合并,不是覆盖,如果管理动的期间删除了啥东西,当张三拉V3版本时,他的项目中的这个文件也会被删除,一般实际工作期间会有交流,不会不明不白的删除东西
举例在前面git小节第六点已经试过了
3.线上分支合并
本地同步远程dev分支
先去gitee仓库,创建一个分支出来


这时候我们可以给线下的拉一下分支过来(不能先有dev,先保持单一个Master分支)
1.git pull 远程仓库目标 分支名
不过注意,拉下来了但是git branch看不到,要先切过去
2.git checkout 分支名
3.再次查看git branch就有了
远程仓库合并
仓库管理员(一般是上级领导)点击这个

提交Pr / rr (gitlab叫这个)
-master中没有代码,dev中有提交的,现在要线上分支合并
-把远程的dev合并进远程的master
- 提交pr 提交rr
-在网站上,申请提交pull request
-领导审核,测试,通过后,点击合并
-线上dev就合并进线上的master了
4.远程仓库回滚
不是小职员级别能去干的,不要搞
# 想远程的代码,是最初的状态
# 步骤:
1 本地版本回退
git reset --hard 版本号
2 强行推到远端
git push origin master -f
Git相关、Gitee多人协同开发的更多相关文章
- git 工作中实用 多人协同开发
多人协同开发 .克隆分支 git clone -b dev1. url .创建并关联远程分支 git checkout -b dev_wt origin/dev_wt 情况一获取其它分支的代码,并合并 ...
- GitHub的多人协同开发配置
GitHub For Windows 下载地址:https://windows.github.com/ 基本的注册登录就不细讲了. 在源代码管理上,最重要的就是仓库了.仓库这一概念很容易理解,所谓仓库 ...
- Git详细教程---多人协作开发
Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...
- Git之多人协同开发
一.获取远程库信息 1 2 3 $ git remote -v origin https://github.com/xxxxx/node.git (fetch) origin https://gi ...
- git 多人协同开发
一.允许他人操作程序(两种方式) 1.添加合作者 2.创建组织 二.分支 每个开发者创建一个属于他们的dev分支 三.合并规则 1.一起合并(代码会出现冲突) 2.尽量缩短合并的周期
- Git学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件
远程库 远程库,通俗的讲就是不再本地的git仓库!他的工作方式和我们本地的一样,但是要使用他就需要先建立连接! 远程库有两种,一个是自己搭建的git服务器:另一种就是使用GitHub,这个网站就是提供 ...
- Git 之 协同开发
GitHub中多人协同开发和单人开发还是有点差别,协同开发一般有两种方式: 合作者,将其他用户添加到仓库合作者中之后,该用户就具有向当前仓库提交代码. 组织,创建一个组织,然后再该组织下可以创建多个项 ...
- 华为如何实现基于Git的跨地域协同开发
跨地域开发的需求其实由来已久,在IT/互联网发展的早期就已存在,只不过限于当时网络环境的因素,无法在线上有效的完成协同工作,所以没法实际开展.而随着近十年网络的快速发展,跨地域协同开发线变得可能而且越 ...
- Git--代码托管/协同开发
Git--代码托管 我爱写代码,公司写,家里写,如果每天来回带一个U盘拷贝着实麻烦,Git有没有类似于云盘似得东西可以进行数据同步呢?答案肯定是有. GitHub,一个基于Git实现的代码托管的平台, ...
- Git项目协同开发学习笔记2:项目库开发协作相关命令
之前介绍了如何用git构建项目库及其后续操作的问题,但主要还是个人的操作问题,不太涉及到项目协作方面的问题,所以来说下这块.传送门在这里(后面的可以不用看了). 1.同步 首先就式同步问题:在项目协作 ...
随机推荐
- 为什么称不坑盒子是wps和word使用者的救世主呢?
不坑盒子 很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文档中,支持Office 2 ...
- Creo9.0 安装破解图文教程 【2022年12月29日亲测有效】
前言 creo9.0正式版是一款非常优秀的3D建模设计软件.该软件界面美观,提供了CAD 技术.模制造绘图.多实体建模.多体设计.实时仿真.框架和焊缝设计等一系列强大的辅助设计功能,通过这些功能,让用 ...
- 【CTO变形记】高维视角,跳出“农场主与火鸡”
前言:看待人事物的角度决定了我们的思考方向和处理事情的方式.在这些认识人事物的过程中,导致了一些"事故"发生:就好比"以手指月",原本要看"月亮&qu ...
- CSS_语法格式
* 格式: 选择器{ 属性名1:属性值1: 属性名2:属性值2: ... } *选择器:筛选具有相似特征的元素 *注意: *没一对属性需要使用":"隔开,对最后一对属性可以不加&q ...
- 【TS】函数和函数类型
在使用函数的时候,通常会给函数传值,或者给函数一个返回值调用,这个时候就会涉及到函数类型. 函数类型分为两个方面: 1.函数参数 2.函数返回值 语法: function 函数名( 参数 : 参数类型 ...
- GMAC网卡相关介绍与分析
GMAC网卡相关介绍与分析 目录 GMAC网卡相关介绍与分析 环境描述 MII MII RMII GMII RGMII SGMII GMAC网卡信息获取方法 获取GMAC网卡信息 查看PHY工作接口模 ...
- 微信小程序的全局弹窗以及全局实例
全局组件 微信小程序组件关系中,父组件使用子组件需要在父组件index.json中引入子组件,然后在父组件页面中使用,这种组件的对应状态是一对一的,一个组件对应一个页面.如果有一个全局弹窗(登录),那 ...
- Median String
You are given two strings ss and tt, both consisting of exactly kk lowercase Latin letters, ss is le ...
- MySQL索引的基本理解
之前一致以为索引就是简单的在原表的数据上加了一些编号,让查询更加快捷.后来发现里面还有更深的知识. 索引用于快速查找具有特定列值的行.如果没有索引,MySQL 必须从第一行开始,然后通读整个表以找到相 ...
- NSAIDs以优化剂量治疗中轴型SpA:聚焦6周期间骶髂关节MRI变化
NSAIDs以优化剂量治疗中轴型SpA:聚焦6周期间骶髂关节MRI变化 PresentID: OP0170 TREATMENT OF AXIAL SPONDYLOARTHRITIS WITH AN O ...