Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
在IDEA开发工具中可以集成Git:
集成后在IDEA中可以看到Git相关图标:
代码回溯:Git在管理文件过程中会记录日志,方便回退到历史版本
版本切换:Git存在分支的概念,一个项目可以有多个分支(版本),可以任意切换
多人协作:Git支持多人协作,即一个团队共同开发一个项目,每个团队成员负责一部分代码,通过Git就可以管理和协调
远程备份:Git通过仓库管理文件,在Git中存在远程仓库,如果本地文件丢失还可以从远程仓库获取
git status | 查看文件状态 |
git add 文件名称 | 将文件的修改加入暂存区 |
①git reset 文件名 | 将暂存区的文件取消暂存 |
②git reset --hard “版本号” | 将暂存区的文件切换到指定版本 |
git commit -m “备注信息” 文件名 | 将暂存区的文件修改提交到版本库 |
git log | 查看日志 |
git remote | 查看远程仓库 |
git remote add 远程仓库简称 远程仓库地址 | 把本地仓库添加到远程 |
git clone “远程仓库地址” | 从远程仓库克隆 |
git push 远程仓库简称 分支名称 | 将分支推送到远程 |
git pull | 从远程仓库拉取 |
git branch | 列出所有本地分支 |
git branch -r | 列出所有远程分支 |
git branch -a | 列出所有本地分支和远程分支 |
git checkout 分支名称 | 切换分支 |
git merge 分支名称 | 将两个分支文件进行合并 |
git tag | 查看标签 |
git tag 标签名称 | 创建标签 |
git push origin 分支名称 | 将标签推送到远程仓库 |
git checkout -b 分支名 标签名 | 检出标签 |
Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git仓库分为两种:
git下载地址:https://git-scm.com/download
下载完成之后会有一个.exe文件,双击运行,傻瓜式(一直点击下一步)安装即可!
安装完成后可以在任意目录下点击鼠标右键,如果能够看到如下菜单则说明安装成功:
Git GUI Here:打开Git 图形界面
Git Bash Here:打开Git 命令行
Git安装目录结构如下:
Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?
我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
名称 | 网址 | 说明 |
---|---|---|
gitHub | gitHub | 一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub |
码云 | https://gitee.com/ | 国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快 |
GitLab | https://about.gitlab.com/ | 一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务 |
BitBucket | https://bitbucket.org/ | 一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户 |
码云网址:https://gitee.com/
注册网址: https://gitee.com/signup
注册完成后可以使用刚刚注册的邮箱进行登录( https://gitee.com/login )
注意:每个Git远程仓库都会对应一个网络地址,点击【克隆/下载】按钮,在弹出窗口点击
3.2.4 邀请其他用户成为仓库成员
前面已经在码云上创建了自己的远程仓库,目前仓库成员只有自己一个人(身份为管理员)。在企业实际开发中,一个项目往往是由多个人共同开发完成的,为了使多个参与者都有权限操作远程仓库,就需要邀请其他项目参与者成为当前仓库的成员。
点击管理按钮进入仓库管理页面,左侧菜单中可以看到【仓库成员管理】:
点击【添加仓库成员】菜单下的【邀请用户】菜单,跳转到如下页面,可以看到邀请用户有多种方式:链接邀请、直接添加、通过仓库邀请成员。
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。在Git 命令行中执行下面命令:
设置用户信息
git config --global user.name "victy"
git config --global user.email "study.zilv"
查看配置信息
git config --list
注意:上面设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,此处可以任意设置。
要使用Git对我们的代码进行管理,首先需要获得Git仓库。
获取Git仓库通常有两种方式:
在本地初始化Git仓库(不常用)
从远程仓库克隆(常用)
操作步骤如下:
在任意目录下创建一个空目录(例如gitTest)作为我们的本地Git仓库
进入这个目录中,点击右键打开Git bash窗口
执行命令
git init
如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
初始文件目录:
执行git init命令之后的文件目录:
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令格式:git clone 远程仓库地址
此时仓库文件状态:
为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到。
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
Git工作区中的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制):文件是新创建的,git没有去管理它
tracked 已跟踪(被纳入版本控制)
(1)Unmodified 未修改状态
(2)Modified 已修改状态
(3)Staged 已暂存状态
注意:文件的状态会随着我们执行Git的命令发生变化
此时远程克隆仓库的文件状态(我们新建了user.java与user.xml文件):
查看文件状态
git add 命令的作用是将文件的修改加入暂存区。
命令格式:git add fileName
加入暂存区后再执行 git status 命令,可以发现文件的状态已经发生变化。
执行add命令后查看状态:
git reset 命令的作用是将暂存区的文件取消暂存或者是切换到指定版本
取消暂存命令格式:git reset 文件名
切换到指定版本命令格式:git reset --hard 版本号
git commit 命令的作用是将暂存区的文件修改提交到版本库
命令格式:git commit -m “备注信息” 文件名
提交了user.java文件之后,就只剩下了一个未暂存的user.xml
解释说明:
-m:代表message,每次提交时需要设置,会记录到日志中
也可以使用通配符*一次提交多个文件
通过git log命令查看日志,可以发现每次提交都会产生一个版本号,提交时设置的message、提交人、邮箱、提交时间等信息都会记录到日志中
我们在user.java中添加以下内容,并保存。
public static void main(String[] args) {
System.out.println("我一定能学好Git!!");
}
此时文件状态改变:
此时我们再把修改过后的user.java文件提交(此时):
我们查看提交日志,会有两个版本号:
现在我们要做的就是把user.java文件切换到第一次提交时候的版本:
此时你再打开user.java文件,就会发现我们刚才添加进去的内容就消失了!
如果切换至第二次提交的版本号,执行reset命令后我们就会发现,刚才添加到user.java进去的内容就又回来了
如果要查看已经配置的远程仓库服务器,可以执行 git remote 命令,它会列出每一个远程服务器的简称。
如果已经克隆了远程仓库, 至少能够看到origin,这是Git克隆的仓库服务器的默认名字。
解释说明:
可以通过-v参数查看远程仓库更加详细的信息
本地仓库配置的远程仓库都需要一个简称,后续在和远程仓库交互时会使用这个简称
添加远程仓库命令格式:git remote add 简称 远程仓库地址
把本地仓库添加到远程,远程仓库的默认名称为origin
一个本地仓库关联多个远程仓库
在前面我们已经测试过此命令了,可以复习一遍!
将本地仓库内容推送到远程仓库。
命令格式:git push 远程仓库简称 分支名称
此时我们就可以在码云看到我们所提交上去的user.java文件
git pull 命令的作用是从远程仓库获取最新版本并合并到本地仓库
命令格式:git pull 远程仓库简称 分支名称
在本地初始化一个新的repo仓库,并在此仓库中创建new.java文件。然后把此仓库添加到远程仓库(远程仓库依然是我们上文中用到的ceshi仓库)。
文件目录如下:
从远程仓库拉取代码
此时我们就会发现本地仓库多了user.java文件
PS:如果当前本地仓库不是从远程仓库克隆,而是本地创建(通过 git init)的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令最后加入参数–allow-unrelated-histories
(我测试时并没有出现这个错误,又出现这个错误的小伙伴可以参考一下!)
分支是Git 使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
本地仓库和远程仓库中都有分支,同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过git init 命令创建本地仓库时默认会创建一个master分支。
查看分支命令:git branch
git branch 列出所有本地分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
此时再回到我们的ceshi文件夹(也就是从远程拉取下来的ceshi仓库)
创建分支命令格式:git branch 分支名称
一个仓库中可以有多个分支。
切换分支命令格式:git checkout 分支名称
推送至远程仓库分支命令格式:git checkout 分支名称
合并分支就是将两个分支的文件进行合并处理。
令格式:git merge 分支名称
此时我们把user.java中的文件修改为(此时我们已经切换到b1分支)并把b1分支提交推送至远程仓库:
public static void main(String[] args) {
System.out.println("我一定能学好Git!!");
System.out.println("我一定能学好Git!!");
}
此时远程仓库b1分支下user.java的内容为:
此时b1分支与master分支中user.java的内容完全不同的。
此时我们要做的就是把b1合并到master:
我们切换到master分支
注意:分支合并时需注意合并的方向,如上图所示,在Master分支执行操作,结果就是将b1分支合并到Master分支
此时我们就会发现master分支下的user.java文件内容也为:
public static void main(String[] args) {
System.out.println("我一定能学好Git!!");
System.out.println("我一定能学好Git!!");
}
如果在合并的时候出现冲突,我们就打开本地文件进行冲突处理,处理完成之后把改文件添加到本地仓库,使用git commit -m “” user.java -i 命令就能推送成功单个文件
Git 中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
查看标签命令:git tag
命令格式: git tag 标签名称
命令格式:git push origin 分支名称
此时我们就会发现我们的远程仓库多出了一个标签
检出标签时需要新建一个分支来指向某个标签,
检出标签的命令格式:git checkout -b 分支名 标签名
标签完成之后,就不会再修改了
检出标签就是在这个标签的基础上进行其他的开发或操作。
检出标签的操作实质 : 就是以标签指定的版本为基础版本,新建一个分支,继续其他的操作。因此 ,就是新建分支的操作了。
最新笔记链接:https://note.youdao.com/s/F160OmgT
文章浏览阅读2.4k次。这是运行的效果:新建components组件文件夹,里面新建tabbarComponent文件夹,结构如下:tabbar.js代码:// tabBarComponent/tabBar.jsconst app = getApp();Component({ /** * 组件的属性列表 */ properties: { tabbar: { type: Object, value: { "backgroundColor": "#f_微信小程序定制底部菜单怎么做 中间是一个弧形
文章浏览阅读3.3w次,点赞4次,收藏12次。一 . 大家的都知道Linux下是自带vi ,那么我们如何对vi使用呢?在centos下打开terminal,通过 touch aa.txt //新建一个名称为aa的文本文件。2. 用vi打开该文本 vi aa.txt3. 对文本进行操作,常用操作自行查找二. centos下安装vim,因为vi的功能没有vim丰富用yum查找源中的VIM包,不知安装哪个合适。yum search_centos. vim. setnu
文章浏览阅读7.3k次,点赞4次,收藏11次。这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_ration以及/proc/sys/vm/dirty_ratio两个参数的大小来实现。看了不少相关博文的介绍,不过一直弄不清楚这两个参数的区别在哪里,后来看了下面的一篇英文博客才大致了解了它们的不同。v..._dirty_background_ratio
文章浏览阅读342次。第一章 关于多线程编程多年来,计算机的最大性能主要受限于它的中心微处理器的速度。然而由于个别处理器已经开始达到它的瓶颈限制,芯片制造商开始转向多核设计,让计算机具有了同时执行多个任务的能力。尽管Mac OS X利用了这些核心优势,在任何时候可以执行系统相关的任务,但自己的应用程序也可以通过多线程方法利用这些优势。1.1 什么是多线程多线程是一个比较轻
文章浏览阅读1k次。如果是 I/O 任务,就从 线程池 中拿出一个线程来处理这个事件,并指定回调函数,当线程中的 I/O 任务完成以后,就执行指定的回调函数,并把这个完成的事件放到事件队列的尾部,线程归还给线程池,等待事件循环。就像上面说的:Node.js 在主线程里维护了一个"事件队列"(Event queue),当用户的网络请求或者其它的异步操作到来时,Node 都会把它放到 Event Queue之中,此时并不会立即执行它,代码也不会被阻塞,继续往下走,直到主线程代码执行完毕。如果是单线程,他是如何处理高并发请求的?_nodejs单线程处理高并发
文章浏览阅读9.5w次,点赞5次,收藏35次。MyBatis的返回参数类型分两种1. 对应的分类为:1.1. resultMap :1.2. resultType :2 . 对应返回值类型:2.1. resultMap : 结果集[对象等]2.2. resultType : Integer,String ,Long ,class3. 注意点:在MyBatis进行查询映射时,其实查询出来的每一个属性_mybatis返回bigdecimal
文章浏览阅读1w次,点赞3次,收藏10次。warning: multi-character character constant 2011-05-14 16:33:57| 分类: C/C++|举报|字号 订阅 Dev-C++提示以上错误,经查是char类型字符只能存放一个单字符的原因,错误代码如下:'. '这个点符号后面跟了个空格,编译的时候会提示警告,但仍编译成功。运行的时候_warning: multi-character character constant
文章浏览阅读976次,点赞5次,收藏23次。#include <stdio.h>#include <stdlib.h>#include <string.h>int MATEFLAG=0;//配偶typedef struct TreeNode{ int Num; //记录这个人拥有几个儿女 char Name[20]; //记录这个人的姓名 char Kind; //标._c++族谱总结
文章浏览阅读2.4k次,点赞3次,收藏8次。本文介绍利用一块树莓派Pico开发板、一块面包板、两个按键、1个LED发光二极管和7跟导线等少量元器件实现树莓派Pico扩展按键接口的方法,并给出所对应按键接口的MicroPython编程示例。一、树莓派Pico扩展按键接口的方法运用树莓派Pico开发板扩展按键的方法有两种。1、使用Pico开发板RP2040 MCU片内上拉电阻扩展按键接口Pico开发板主芯片采用的是树莓派基金会自研的MCU芯片,其型号是RP2040。使用Pico开发板RP2040 MCU片内上拉电阻扩展按键接口方法原理图见图1所示_pico按钮原理图
文章浏览阅读2.4k次,点赞3次,收藏8次。如今,Google早已将Kotlin编程语言作为了头等语言(first-class programming language)用于Android开发中,并且在Android Studio中获得了非常全面的支持。与此同时,我们看到Google从Android Studio 3.0开始就已经支持了Java 8,过了这么多年仍然不对Java语言进行升级就能看到Google当前对Java已经持有相当冷淡的态度了,预计Java 8将是Android Studio最高能支持的Java版本了(*^_^*)。或许这跟Ora_kotlin调用c语言
文章浏览阅读753次,点赞20次,收藏23次。本文举例了几个常见的软件工具使用问题,文末会提供一些我自己整理和使用的工具资料。"在追逐零 Bug 的路上,我们不断学习、改进,更加坚定自己的技术信念。让我们相信,每一个 Bug 都是我们成长的机会。更多有关于VMware、Burp、Xshell、kali的问题可以关注博主后,在私信处拿链接,以后工具故障看这个就行给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。
文章浏览阅读334次。概要Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处理过的数据可以被推送到文件系统,数据库和HDFS。imag..._sparkstreaming读取file文件java