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

最新文章

  1. gradle多模块开发
  2. 基于Typecho CMS框架开发大中型应用
  3. poj1113 凸包
  4. cxTreeList 控件说明
  5. 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)
  6. Android 中的Force Close
  7. bzoj 1036 Tree Count
  8. eclipse提示servlet不存在 的解决办法
  9. multimap和multiset 认知和使用
  10. 各大Oj平台介绍[转]
  11. wcf中的File-less Activation
  12. DOSUSB 2.0 免费版的限制原理
  13. TMemoryStream、String与OleVariant互转
  14. hdu3689(kmp+dp)
  15. cocos creator主程入门教程(三)—— 资源管理
  16. python 学习地址
  17. git知识总结-1.git基础之基本术语
  18. pta编程总结3
  19. secureCRT保存屏幕输出内容
  20. 转:嵌入式: jffs2,yaffs2,logfs,ubifs文件系统性能分析

热门文章

  1. 电商网站Web自动化测试实战( 编写京东搜索脚本python+selenium框架)
  2. 宇宙最强开发工具VScode简易手册
  3. slate源码解析(一)- 序言
  4. Commons-Collections反序列化
  5. [EULAR文摘] 在总人群中监测ACPA能否预测早期关节炎
  6. [EULAR文摘] 新证据: NSAID对AS放射学进展的影响
  7. 代码随想录算法训练营day23 | leetcode 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树
  8. 代码随想录算法训练营day02 | leetcode 977/209/59
  9. docker-compose部署rocketmq
  10. Net Core 网关 Ocelot 简单案例