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.同步 首先就式同步问题:在项目协作 ...
随机推荐
- JAVA虚拟机21---JAVA内存模型
1.Amdahl定律和摩尔定律 并发处理的广泛应用是Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力的最有力武器. Amdahl定律通过系统中并行化与串行化的 ...
- ASP.NET Core - 请求管道与中间件
1. 请求管道 请求管道是什么?请求管道描述的是一个请求进到我们的后端应用,后端应用如何处理的过程,从接收到请求,之后请求怎么流转,经过哪些处理,最后怎么返回响应.请求管道就是一次请求在后端应用的生命 ...
- mybatis学习日记
1.什么是框架 框架是软件开发中的一套解决方案,不同的框架解决不同的问题 2.三层架构 表现层:展示数据 业务层:处理业务需求 持久层:与数据库交互 3.持久层解决技术 JDBC技术(JDBC是一种规 ...
- 【TS】数组和元组
数组 在ts中,定义数组类型语法: let 变量名 : 数据类型[] = [值1,值2,值3] let arr1 : number[] = [1,2,3,4] console.log(arr1); / ...
- 图卷积神经网络分类的pytorch实现
图神经网络(GNN)目前的主流实现方式就是节点之间的信息汇聚,也就是类似于卷积网络的邻域加权和,比如图卷积网络(GCN).图注意力网络(GAT)等.下面根据GCN的实现原理使用Pytorch张量,和调 ...
- Vulhub 漏洞学习之:AppWeb
Vulhub 漏洞学习之:AppWeb 目录 Vulhub 漏洞学习之:AppWeb 1 AppWeb认证绕过漏洞(CVE-2018-8715) 1.1 漏洞利用原理 1.2 漏洞利用过程 1 App ...
- SAP 登录文件路径
链接文件地址C:\Users\Administrator\AppData\Roaming\SAP\Common 复制:Common文件夹所有文件替换
- 微信小程序if for
1.控制代码的显示隐藏 1.wx:if="{{}}"判断是否需要渲染代码 <view wx:if="{{tiaojian===1}}">显示1< ...
- MATLAB批量处理表格类型文件
MATLAB版本2020b 问题背景:预处理数据,有若干变压器温度表格,要将变压器运行温度数据提取出来 通过LSTM模型进行温度预测
- 信创要求下,FTP要不要替代?要怎么进行国产化替代?
信创在国内如火如荼地发展,无论在技术探索和突破上,还是在政策规划上,都朝着更加完善的方向大步迈进.信创目前在从大的方面来说,信创目前主要集中在基础软件.硬件和芯片上,其中基础软件包括操作系统.数据库. ...