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.同步 首先就式同步问题:在项目协作 ...
随机推荐
- JWT拦截器与跨域问题
本文参考: https://blog.csdn.net/csdn_x_w/article/details/108027940 我发现走的都是OPTIONS协议,然后JWT 却把OPTIONS拦截了,于 ...
- c++ 程序通用多线程单例设计 c++ web 框架设计经验谈
设计 c++ web 框架时候,想要一个框架缓存类,很多通用缓存类是用字符保存,作为框架内置就不要序列和反序列了,因为框架内部使用. 想给自己的paozhu c++ web 框架添加缓存类,参考了sp ...
- Python关键字 asynico
同步和异步 同步和异步是指程序的执行方式.在同步执行中,程序会按顺序一个接一个地执行任务,直到当前任务完成.而在异步执行中,程序会在等待当前任务完成的同时,执行其他任务. 同步执行意味着程序会阻塞,等 ...
- 学习Vue过程中遇到的问题---code: 'MODULE_NOT_FOUND'
在学习安装脚手架Vue-cli过程中 步骤为: 第一步(仅第一次执行):全局安装@vue/cli. npm install -g @vue/cli 第二步:切换到你要创建项目的目录,然后使用命令创建项 ...
- .bash_profile等配置文件
brew环境 mysql:数据库,装数据用. redis:缓存用. unrar:解压用. docker:虚拟环境用. node:某些项目依赖这个. python环境 command line tool ...
- LG P4168 [Violet]蒲公英
\(\text{Problem}\) 强制在线静态询问区间众数 \(\text{Solution}\) 不得不说 \(vector\) 是真的慢 做 \(LOJ\) 数列分块入门 \(9\) 卡时间卡 ...
- What?JMeter做UI自动化!
JMeter做UI自动化 不推荐,好别扭,但可行 插件安装 搜插件selenium,安装 添加config 添加线程组 右键线程组->添加->配置元件->jp@gc - Chrome ...
- axSpA患者新发炎症更容易发生在既往发生过炎症的区域
axSpA患者新发炎症更容易发生在既往发生过炎症的区域 EULAR2015; PresentID: SAT0240 NEW INFLAMMATORY LESIONS IN AXIAL SPONDYLO ...
- .Net 调用 sqlserver 存储过程实例
1.输出datatable 存储过程: create proc inparamS @inpar varchar(20) as begin select top 1 * from Address whe ...
- 基于C++的OpenGL 07 之颜色
1. 引言 本文基于C++语言,描述OpenGL的颜色 前置知识可参考: 基于C++的OpenGL 06 之摄像机 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过多描述 ...