本文章由公号【开发小鸽】发布!欢迎关注!!!

老规矩–妹妹镇楼:

一. Git

(一) Git与SVN的对比

1. SVN

SVN是集中式版本控制系统,版本库是集中放在中央服务器上的,开发人员只能从中央服务器中下载最新的版本进行开发,开发完毕后,需要将自己开发的代码提交到中央服务器中。

集中式版本控制工具缺点:

服务器单点故障:当服务器出现故障时,所有的开发需要等待服务器的故障排除后才能继续进行。容错性很差

2. Git

Git是分布式版本控制系统(Distributed Version Control System,DVCS),分为两种类型的仓库:本地仓库和远程仓库。本地仓库是开发人员自己电脑上的Git仓库,远程仓库是远程服务器上的Git仓库。

当开发人员开发完毕后,可以通过Commit命名将代码提交到本地仓库上;若想将代码提交到远程仓库中,使用Push推送命令推送到远程仓库中;若想从远程仓库中下载代码到本地仓库,使用Pull拉取命令;若想直接将远程仓库复制到本地,就使用Clone克隆命令。

(二) Git工作流程

Git的工作流程如下所示:

1. 从远程仓库中通过Clone克隆代码到本地仓库中。

2. 开发人员从本地仓库中通过checkout获取代码后进行代码修改。

3. 开发人员修改完代码后,想要将代码提交到本地仓库中,首先将代码Add提交到暂存区,之后暂存区会将代码Commit到本地仓库中。

4. 提交到本地仓库后,本地仓库保存着修改的历史版本。

5. 当需要将代码上传到远程仓库时,可以通过Push从本地仓库推送代码到远程仓库中。

6. 若想直接从远程仓库中获取代码,则可以通过Pull拉取代码到工作区中,不经过本地仓库。

二. Git代码托管服务

(一) 常用的Git代码托管服务

通常我们是借助互联网上提供的一些代码托管服务来搭建Git远程仓库,其中比较常见的有GitHub,码云,GitLab等。

GitHub是一个面向开源即私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,因此命名为GitHub;码云是国内的一个代码托管平台;GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

(二) 使用码云进行代码托管

1. 创建新仓库

登录码云,创建新的仓库,每个Git远程仓库都会对应一个网络地址,可以店家克隆/下载按钮弹出窗口,窗口中就是Git远程仓库对应的网络地址。

2. 邀请其他用户成为仓库成员

项目的开发是由多人共同完成的,为了使多个参与者都有权限操作远程仓库,需要邀请其他项目参与者成为当前仓库的成员。

三. Git常用命令

(一) 环境配置

安装完Git后首先要设置用户名和email名称,每次Git提交时都会使用该用户名和email地址进行验证。

1. 设置用户信息

git config –global user.name “mrwxx”
git config –global user.email hello@wxx.cn

git config 是用于Git配置的命令, --global代表着这是全局的, user.name代表着用户名称,user.email代表着email地址。

2. 查看配置信息

以列表形式显示所有的Git配置:

git config –list

显示单个Git配置:

git config user.name

当我们手动设置完Git的配置后,这些配置信息会保存在本地用户的目录下,如本地的C:\Users\Mr.wmxx下面,有一个.gitconfig文件,文件中存储着刚刚配置的信息:

[user]name = mrwxxemail = hello@wxx.cn

(二) 获取Git仓库

获取Git仓库有两种方式,一种是在本地初始化一个Git仓库,另一种是从远程仓库中克隆一个。

1. 本地初始化Git仓库

在本地初始化一个Git仓库,就是将本地的一个文件夹作为Git仓库,在某个文件夹下右键进入Git Bash,使用git init命令初始化一个Git仓库。这样,该文件夹下会生成一个.git隐藏文件夹。

2. 克隆远程仓库

克隆远程仓库到本地中,在本地的文件夹下进入Git Bash,使用git clone 命令,后面加 远程仓库的地址即可。

git clone https://gitee.com/mrxx/repos.git

(三) 工作目录,暂存区以及版本库

1. 版本库

前面所说的.git文件夹就是版本库,版本库中存储了很多的配置信息,日志信息和文件版本信息。

2. 工作目录(工作区)

包含.git文件夹的目录就是工作目录,主要用于存放开发的代码。

3. 暂存区

.git文件夹中的index文件就是暂存区,暂存区用于临时保存修改的文件。

开发人员在工作区进行开发,开发修改后的代码通过 git add命令传到暂存区,再通过git commit 命令提交到版本库中。

(四) Git工作目录下文件的两种状态

Git工作目录下的文件存在两种状态,这些文件的状态会随着Git命令的执行而发生变化。

1. untracked

未跟踪状态,说明它未被纳入版本控制中。

2. tracked

已跟踪状态,说明它已经被Git纳入版本控制了,且已跟踪状态又分为三种状态:

(1) Unmodified

未修改状态,文件没有被修改过。

(2) Modified

已修改状态,文件已经被修改过了。

(3) Staged

已暂存状态,文件已经放入暂存区中、

(五) 本地仓库操作

1. git status

在工作区中使用git status查看工作区中文件的状态。
       使用 git status -s使得输出结果更加简洁

2. git add

git add命令将未跟踪的文件加入暂存区中,那么该文件的状态就会变为已跟踪中的已暂存状态。

git add hello.txt

3. git reset

git reset命令将暂存区中的文件取消暂存,那么该文件的状态就会发生变化,变为未跟踪。

git reset hello.txt

4. git commit

要想将代码提交到本地仓库中,必须通过暂存区,即先将代码通过git add命令存到暂存区中,再通过git commit命令将代码提交到本地仓库中。

git commit -m “init hello.txt”

-m代表着日志,每次上传代码到本地仓库中,必须要写日志信息,如果不加-m,它会弹出一个编辑器让我们进行编写。

5. git rm

git rm命令将文件从工作区中删除,但是,本地仓库中的该文件并没有被删除,要想删除,需要提交到本地仓库。提交之前我们需要将该文件添加到暂存区中,有趣的是,使用git rm命令删除该文件后,该文件就自动被添加到了暂存区中,因此我们可以直接使用git commit命令提交就可以了,本地仓库中的该文件就被删除了。

6. .ignore文件

工作区中有一些文件是不需要纳入Git的管理的,也不希望他们总是出现在未跟踪文件列表中,因此,我们可以在工作区中创建一个名为 .gitignore的文件,在该文件中列出需要忽略的文件模式,如下所示:

*.a : 代表着忽略所有的.a格式文件

!lib.a : 代表着除了lib.a之外

/TODO : 代表着忽略TODO文件

build/ : 代表着忽略build文件夹下的所有文件

doc/*.txt : 代表着忽略doc文件夹下的所有txt文件

doc/**/*.txt : 代表和忽略doc目录下的所有子目录的txt文件

7. git log

通过git log命令查看日志记录,按Enter键向下浏览记录,按q键 退出到命令行。

(六) 远程仓库操作

1. git remote

当一个本地的工作空间和远程仓库建立了联系后,通过git remote命令查看已经配置的远程仓库服务器,它会列出指定的每一个远程服务器的简写,如果已经克隆了远程仓库,那么至少有一个origin,这是Git克隆的远程仓库服务器的默认名字。

想要更加详细的信息,可以在git remote命令后面加上 -v,可以显示远程仓库服务器的地址:

git remote -v

若是想查看某一个远程仓库服务器的信息,则使用git remote show 命令后面加上该仓库的简写即可:

git remote show origin

2. git remote add

通过git remote add命令为本地添加远程仓库,命令后面首先加上 远程仓库的简写,然后是 远程仓库的地址:

git remote add origin https://gitee.com/mtwxx/repos.git

我们可以为本地添加多个远程仓库。

3. git clone

git clone命令负责从远程仓库中进行拷贝,Git克隆的是该Git仓库服务器上几乎所有数据(包括日志信息,历史记录等)。当执行git clone 命令时,默认配置下远程Git仓库中的每一个文件的每一个版本都会被拉取下来。

git clone https://gitee.com/mrwxx/repo.git

4. git remote rm

通过git remote rm 命令移除本地连接的一个远程仓库,命令后面跟远程仓库的简称。这里只是在本地中移除远程仓库的记录,不会影响到真正的远程仓库。

git remote rm origin

5. git fetch

git fetch是从远程仓库获取最新版本到本地仓库中,不会自动地merge,不会自动合并到本地仓库中,即不会直接显示在本地仓库中。

git fetch origin master

origin是远程仓库的简称,master是远程仓库的分支。

我们还要通过 git merge 来合并代码到工作区中,后面接远程仓库的分支,如:

git merge origin/master

6. git pull

git pull也是从远程仓库获取最新版本到本地仓库,但是会自动merge,合并代码。

git pull origin master

注意:如果当前的本地仓库是本地创建的仓库,且仓库中存在文件,此时再从远程仓库中拉取文件时会报错(fatal:refusing to merge unrelated histories),这是因为原有的文件与拉取的文件无法合并。可以通过在git pull命令后添加参数 –allow-unrelated-histories来解决

git pull origin master –allowed-histories-histories

7. git push

通过git push命令将本地的代码推送到远程仓库中,后面接远程仓库的简写,以及分支名:

git push origin master

这个操作一般都是在我们对之前下载的代码进行修改之后,修改后的代码是没有进入本地仓库的,因此我们首先要将修改后的代码提交到本地仓库,而提交到本地仓库首先要存到暂存区,使用git add 添加到暂存区或者 git commit -a命令直接提交到本地仓库中。在这之后,就可以执行git push命令推送新的代码到远程仓库了。

(七) Git分支

所有的版本控制系统都有分支,使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线。Git的master分支不是特殊的,之所以每个仓库都有master分支,是因为git init会默认创建它。

1. 查看分支

git branch 列出本地所有分支

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

git branch -a 列出本地和远程的所有分支

2. 创建分支

git branch a 创建a分支

3. 切换分支

我们通过git checkout来切换分支,命令行中会显示目前使用的分支:

git checkout a 切换到a分支

4. 推送到远程仓库分支

将本地的分支推送到远程仓库的分支中,如推送到origin仓库的b1分支中:

git push origin b1

5. 合并分支

通过git merge命令合并两个分支,如我们要将b3分支合并到master分支上,那么,我们需要切换到master分支中,使用git merge b1命令合并分支。如果在两个不同的分支中,对同一个文件同一个部分进行了不同的修改,Git就合并它们,会提示文件冲突。此时我们需要打开冲突的文件并修复冲突内容,最后执行git add命令将代码存到暂存区中。

6. 删除分支

若要删除本地的分支,可以通过git branch -d 后面接分支的名称来删除该分支。若在该分支中已经进行了修改,且没有推送到远程仓库中,那么使用上面的命令并不会删除分支,因为直接删除会有丢失修改数据的风险。若坚持要直接删除,将-d参数改为-D参数即可删除。

若要删除远程仓库中的分支,可以使用git push origin -d branchName,origin是远程仓库的简称,branchName是分支的名称。

(八) Git标签

Git可以给历史中的某一个提交打上标签,以示重要,人们会使用这个功能来标记发布节点。标签指的是某个分支某个特定时间点的状态,通过标签,可以很方便地切换到标记时的状态。

1. git tag

列出已有的标签

2. git show [tag]

查看tag信息

3. git tag [tagName]

新建一个tag标签

4. git push [remote] [tag]

将标签推送至远程仓库,提交指定tag
如: git push origin v0.1

5. git checkout -b [branch] [tag]

检出标签,新建一个分支,将该分支指向某个tag

6. git tag -d [tag]

删除本地标签,

7. git push [remote] :refs/tags/[tag]

删除远程仓库的tag,:ref/tags是固定写法:

git push origin :refs/tags/[tag]

【Java学习笔记(五十三)】之Git简介,Git常用命令相关推荐

  1. Java学习笔记(五):一张图总结完JVM8基础概念

    Java学习笔记(五):一张图总结完JVM8基础概念 引文 最近在学习JVM的相关内容,好不容易把基础概念全部都学了一遍,却发现知识网络是零零散散的.迫不得已,只好再来一次总的归纳总结.为了更好的理解 ...

  2. JAVA学习笔记五---函数

    JAVA学习笔记五---函数 5.1 方法的学习 编写一个程序,求圆的周长和面积. package practice; /*** 编写一个程序,求圆的周长和面积.* @author iszhangyo ...

  3. 廖雪峰Git教程笔记与总结 -- Git简介、常用命令、分支管理

    本文主要用于记录阅读Git教程 - 廖雪峰的官方网站后的一些心得笔记,并且对git一些常用命令做一个整理总结. 本文要点分为:1.Git简介:2.Git常用命令:3.Git分支管理. 一.Git简介 ...

  4. Java学习笔记(二十三)日志体系(logback)

    Java日志体系(logback) logback 简介 师出同门,与log4j一样,logback也是由Ceki Gülcü开发的开源日志组件,可以说是log4j的改进版:在现如今的项目中,logb ...

  5. java学习笔记(五)----super用法,final用法,抽象类,接口

    子类不会继承父类的构造方法,在子类的构造方法中可使用super(参数列表)调用父类的构造方法. class Person { String name;   int age;   public Pers ...

  6. 【Java学习笔记五】Java异常处理

    异常通常分为三类: 程序可控制的异常:一般是可预见的错误,不是致命的.例如:除数为0,数组下标越界. 程序不可控制的的异常:这种异常往往是致命的,但是系统可以预见的.例如:系统栈溢出. 人为异常 当系 ...

  7. 对应oracle生成java对象,Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件...

    [前面的话] 身体慢慢已经快好了,感觉真好,哈哈. 这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件.基础文章,选择性阅读. [步骤] 1. ...

  8. opencv学习笔记五十三:训练自己的级联分类器

    训练工作主要分为如下几步: 加载训练环境 制作训练数据集 获取样本路径列表 生成正样本描述文件(.vec) 训练人脸分类器 使用分类器进行人脸检测 加载训练环境  训练过程主要依靠OpenCV自带的两 ...

  9. JAVA学习笔记(五十七)- 常用设计模式

    单例模式 /** 单例模式* 应用场合:有些对象只需要一个,此时可以使用单例模式* 作用:保证整个应用中某个实例有且只有一个* 类型:饿汉模式.懒汉模式*/ public class Test04 { ...

  10. TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作

    要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤. TensorFlow是谷歌于2015年11月9日正式开源的计算框架.TensorFlow计算框架可以很好地支持深度学 ...

最新文章

  1. 二次优化问题dfp_优化设计-fmincon函数介绍-序列二次的规划(SQP)-subspacetrustregion-activesett.pdf...
  2. 一文说说这十多年来计算机玩摄影的历史
  3. c 实现html5,html5 实现手机摇一摇功能(C)
  4. QT Media Error: DirectShowPlayerService::doRender: Unresolved error code 0x80040266
  5. 借用虚拟机在真机安装 ubuntu, 亦可安装至移动硬盘
  6. 计算机窗口移动方法有,北京版一年级信息技术上册《操作窗口学本领》教案
  7. Android开发笔记(八十三)多语言支持
  8. java驱动刷机_ProductTool(炬力芯片刷机工具+驱动) v5.46 中文安装免费版
  9. 红楼梦词频统计,词云生成
  10. 集合框架的理解与总结
  11. line 1: syntax error: unexpected (
  12. R语言实战(统计分析1)
  13. 零基础如何速成插画?插画入门教程分享!
  14. 我与编程,编程予我。
  15. 利用Python批量将csv文件转化成xml文件
  16. c/c++判断数组中元素的个数
  17. 漏洞介绍及修复建议(漏洞汇总,建议收藏后期会不断更新)
  18. cmd del命令笔记
  19. 【视频教程】Javascript ES6 教程39— ES6 ba
  20. 高手教您15招攒机绝招

热门文章

  1. 关于最强游戏主机Xbox One X,你想知道的都在这里了
  2. Nginx配置详解,一文带你搞懂Nginx
  3. redis的list存储对象实现
  4. 今日话题:京东百亿收购1号店,能够与阿里对抗吗?
  5. Vim查找命令及快捷键
  6. php用js验证格式,怎样用JS验证E-mail格式
  7. 开启@yahoo.cn邮箱POP和SMTP的方法
  8. 基于Opencv的水位识别,液面识别、高度识别
  9. Kubernete 安装
  10. 人的一生:知音、知已、知心,遇三知足也