当前位置: 首页 > news >正文

如何在工作中快速上手Git

听说微信搜索《Java鱼仔》会变更强!

本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦

(一)Git是用来做什么的

如果你进入的是一家互联网公司,那么一定会听到版本控制这个东西,所谓版本控制就是在开发过程中对文件、代码等内容的修改历史进行记录,方便查看、备份以及回滚历史代码。

同时可以用于管理多人协同开发项目,通过版本控制实现多个人并行开发,提高开发效率。

Git就是版本控制的一种实现,同样的还有Svn等。

Git又可以称为分布式版本控制,所有的版本信息仓库全部同步到每隔用户的本地,可以离线在本地提交,在有网络的时候push到相应的服务器上即可。

(二)Git的使用

Git的使用一般都是用命令行,如果是windows电脑,安装完成之后鼠标右键可以看到git bash和git gui,建议使用git bash。mac电脑安装完成之后直接在终端使用git命令即可。

2.1 配置信息

#查看所有配置信息
git config --list
#查看系统配置
git config --system --list
#查看全局配置
git config --global --list

2.2 设置用户名和邮箱

git config --global user.name "javayz"
git config --global user.email "xxx@qq.com"

前面两步属于git安装之后的配置部分,接下来介绍git的使用

2.3 初始化本地git仓库

如果想把本地的某个文件夹变成git仓库,只需要执行

git init

2.4 克隆远程仓库

如果想把远程仓库的代码下载到本地,只需要在某个目录下执行

git clone [url]
git clone -b [branchname] [url]

其中-b表示克隆指定分支的代码

2.5 提交文件三步曲

#添加文件到暂存区
git add filename
#将暂存区中的文件提交到本地
git commit -m "提交信息"
git push

我们也可以使用直接对代码进行拉取和提交,更加方便。

(三)Git的工作原理

git中有四个重要的区域:

工作目录(Working Directory):平常存放项目代码的地方

暂存区(Stage):临时存放改动

资源库(Repsitory/Git Directory):提交的所有版本的数据

远程仓库(Remote Directory):代码托管的平台

工作目录–>git add files–>暂存区–>git commit–>资源库–>git push–>远程仓库

(四)Git忽略文件上传

在主目录下建立.gitignore文件可以忽略提交某些文件

*.txt #忽略所有.txt结尾的文件
!a.txt  #a.txt除外
temp/ #忽略temp目录下的文件

(五)ssh免密登陆

ssh-keygen -t rsa -C "xxx@qq.com"

连续三次回车后在.ssh目录下会生成一个id_rsa和id_rsa.pub,把id_rsa.pub中的字符串保存到gitee设置中的ssh公钥中,即可免密提交下载代码

(六)分支管理

分支是分布式版本控制的核心,各个分支之间互相不关联,基本上每次版本迭代都会创建一个新的分支出来。

#列出所有分支
git branch

#列出所有远程分支
git branch -r

#新建一个分支,但依然停留在当前分支
git branch [branch-name]

#新建一个分支,并切换到该分支
git checkout -b [branch]

#合并指定分支到当前分支
git merge [branch]

#删除分支
git branch -d [branch-name]

#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

(七)Git与Idea的集成

Idea本身就支持对Git的集成,当我们clone一个项目到本地后,用Idea打开后会发现右上角多出了git的标志:

第一个蓝色箭头表示把远程仓库的代码pull到本地。

第二个绿色对勾表示提交代码,勾选要commit和push的代码,填写提交信息,然后commit and push即可。

第三个闹钟形状的是提交历史,可查看历史提交信息。

(八)总结

对于工作来说,只需要会用Idea提交拉取代码即可。但是我们需要了解git的工作原理。我是鱼仔,我们下期再见!

相关文章:

  • Dubbo两小时快速上手教程(直接代码、Spring、SpringBoot)
  • [改善Java代码]让工具类不可实例化
  • Sentinel快速入门:这可能是目前最好的分布式系统限流降级框架
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • 想在一个项目中实现多数据源切换?几行代码就搞定了
  • 分享工作一年后收藏的超好用Idea插件,工作效率直接翻倍
  • Activity后台运行一段时间回来crash问题的分析与解决
  • SpringBoot+SpringSecurity实现基于真实数据的授权认证
  • Linux SendMail发送邮件失败诊断案例(三)
  • ElasticSearch究竟是个什么东西
  • 菜鸟学自动化测试(五)-----selenium命令之定位页面元素
  • 软件行业和互联网行业究竟有什么区别?又该如何去选择?
  • 今天打开阿里妈妈惊现 ¥50 元佣金
  • 通过官方文档高效学习ElasticSearch的JavaAPI实现!
  • 如何在自己的项目中引入ElasticSearch搜索引擎?
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android 控件背景颜色处理
  • CEF与代理
  • isset在php5.6-和php7.0+的一些差异
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Javascript设计模式学习之Observer(观察者)模式
  • Python学习之路13-记分
  • Python学习之路16-使用API
  • Vue实战(四)登录/注册页的实现
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 排序(1):冒泡排序
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 异步
  • 怎样选择前端框架
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (AngularJS)Angular 控制器之间通信初探
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (python)数据结构---字典
  • (二)换源+apt-get基础配置+搜狗拼音
  • (九)信息融合方式简介
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .describe() python_Python-Win32com-Excel
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net6 Api Swagger配置
  • .Net多线程总结
  • .NET关于 跳过SSL中遇到的问题
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @拔赤:Web前端开发十日谈
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Android]使用Android打包Unity工程
  • [APIO2015]巴厘岛的雕塑