Git基础和入门

一、Git基础概念

Git功能简单概述

  • 可以随时回滚到之前的代码版本(git reset --hard );
  • 协同开发时不会覆盖别人的代码(分支);
  • 留下修改记录(git log);
  • 发版时可以方便的管理不同的版本;

1、Git工作模式

操作

  • 90%以上的操作在个人计算机上
  • 添加文件、修改文件、提交变更、查看版本历史等
  • 版本库同步
  • 将本地修改推送到版本服务器

版本控制系统:

2、Git文件存储

注意文件存储和SVN不同:

Git 不按照SVN那样对待或保存数据。 反之,Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。

总结特点:

  • 直接记录快照snapshoot。而并非比较差异;
  • 近乎所有操作都在本地执行;
  • 时刻保持数据完整性;
  • 多数操作仅添加数据;
  • 文件的三种状态(只会处于这三种状态)
    • 已修改(modified)
    • 已暂存(staged)
    • 已提交(committed)

3、Git文件状态

  • Git文件: 已被版本库管理的文件;
  • 已修改: 在工作目录(working directory)修改Git文件;
  • 已暂存: 对已修改的文件执行Git暂存操作,将文件存入暂存区(staging area); (注意SVN中没有暂存区这个概念)
  • 已提交: 将已暂存的文件执行Git提交操作,将文件存入版本库(git directory);

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作‘索引’,不过一般说法还是叫暂存区域。

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域git add
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录git commit

git add 放到暂存区;
git commit 从暂存区放到版本仓库中;

4、本地版本库与服务器版本库

Git是分布式的。

二、Git常用命令

1、config和email

关于配置user.nameuser.email:

可以有三个地方配置:

比如输入git config命令, 会出现下面三个信息,即系统级别system,全局global,和局部local。其中优先级不断升高。

[email protected]:~/Git/gitlearn$ git config
usage: git config [<options>]

Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object

这里展示一下配置我们局部的gitlearn仓库:

git 提交的id(commit id)是一个摘要值,这个摘要值实际上是一个sha1计算出来的。

2、git rm 和rm的区别

git rm :

  • 1、删除了一个文件
  • 2、将被删除的文件纳入到了暂存区(stage);(可以直接调用git commit来提交)

若想恢复被删除的文件,需要进行两个动作:

  • 1、git reset HEAD test2.txt,将待删除的文件从暂存区恢复到工作区;
  • 2、git checkout -- test2.txt, 将工作区的修改丢弃掉;

**rm **:

  • 只是将文件删除;注意: 这时,被删除的文件并未纳入到暂存区当中。
  • 这时是提交(git commit)不了的。要想纳入暂存区,必须要再调用一次git add

实战对比:

3、git mv 和 mv的对比

git mv(和git rm 类似):

  • 先完成重命名;
  • 然后提交到暂存区;

git mv演示:

而 mv:

  • 只是完成重命名;
  • 需要自己调用git add提交到暂存区;

?

使用技巧: 可以通过git commit --amend -m ‘修正内容‘更改上次错误的提交消息。(就是-m ‘‘)后面的提交信息写错了。

4、git log查看日志

git log -n 可以查看最近的n条日志。

git log --pretty=oneline以一行一行的方式显示出来。

查看git命令帮助:

5、.gitignore文件

在开发中,如果我们不想将所有的文件都放到git当中,而是要忽略少数一些文件(比如jar包、配置文件等),我们可以在我们的目录创建一个.gitignore文件,git就不会将这些文件放入暂存区,也不会提交(不会加入版本控制系统)。

此时我们可以创建一个.gitignore文件:

简而言之,放在.gitignore中的文件会直接被git无视。

其中,放在.gitignore中的文件也支持正则表达式。
例如:

  • *.a,会忽略所有.a结尾的文件;
  • !lib.a,不要忽略lib.a(排除这个忽略);
  • /test.txt,仅仅忽略项目根目录下的TODO文件,不包括子目录下的test.txt文件;
  • dir1/,忽略dir1/目录下的所有文件;
  • dir1/*.txt,会忽略dir1/a.txt但不会包括dir1/dir2/a.txt
  • 例如dir1/*.txt会忽略dir1下的所有.txt文件,dir1/*/*.txt会忽略dir1下所有层下的.txt,而dir1/**/*.txt会忽略dir1/下的任意层的.txt文件。

.gitignore中用#表示注释。

原文:Java架构笔记

免费Java高级资料需要自己领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G。
传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q

原文地址:https://www.cnblogs.com/yuxiang1/p/11120485.html

时间: 2024-07-29 21:01:14

Git基础和入门的相关文章

Git与Repo入门

版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本.有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了,当几个版本过去后,很可能就是下面的样子了: 二.本地版本控制 手工管理比较麻烦且混乱,所以出现了本地版本控制系统,记录文件每次的

【转】Git与Repo入门----不错

原文网址:http://www.cnblogs.com/angeldevil/p/3238470.html Git与Repo入门 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本.有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了

Gi之(二)Git基础命令

三个工作区域 使用Git之前,首先要弄清Git的三个管理区域,有助于理解Git的运行原理,以及每个Git命令对文件造成的影响. 对于任何一个文件,在本地的Git内部都有三种状态: l   已修改(modified) 表示修改了某个文件,但还没有提交保存.包括新增.删除了一个文件,也属于已修改状态的一种. l   已暂存(staged) 表示把已修改的文件放到了暂存区,也就是放到了下次提交时的清单中. l   已提交(committed) 表示该文件已经被安全地保存在本地数据库中了. 三种状态对应

git基础及分支

关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一条条命令写的觉得很麻烦没头绪.这次在看了向导guides.github.com之后,文章避免了一些细枝末节的命令,而是介绍工作流程,懂了一点工作大概流程再开始使用命令比较合适. 三种状态 工作目录.暂存区域.git目录 工作目录就是你打开文件夹看到可见目录.暂存区域含有添加(add)之后的文件.gi

C#消息队列(MQ)零基础从入门到实战演练

一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练>分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用.本次分享课您将学习到以下知识点: 1.微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用. 2.企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用. 3.如何实现RabbitMQ客户端(Client

git的使用入门介绍-4

今天把git基础部分写完,前面几篇文章大致介绍了一下最最基础的用法,下面是最后一个基础性的用法了,就是git的标签 同大多数的VCS一样,git当然也可以对某一时刻的版本打上标签,来对于发布版本加以特殊的标记,下面我们介绍一下git tag的用法 1.列出已有的标签 git tag 这样就可以了,如果项目中有打过标签,会一一列出,类似下面 $ git tag v0.1 v1.1 ... 标签的顺序不能说明任何问题,只是简单的按照基本的顺序排列,如果你对某一个特殊的标签版本感兴趣,可以这样 git

足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一)

在足球赛事数据库以及统计分析预测平台中,有很多概念,如果不搞懂,很难进行下一步的工作.所以为了配合团队人员的学习和任务进行,特意编写这篇文章.如果有其他问题和不懂的,请留言,将根据情况进行更新. 本文原文地址:足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一) 1.指数1/2/3.... 我在 足彩基础知识入门(3)足彩赔率的本质 一文中介绍了赔率的概念,那么指数的概念和赔率以及结果是相关的.我们举个例子: 如上图的比赛,前面是竞彩非让球的赔率:1.74-3.25-4.15,也就是说

Git基础

这次开发要使用Git取代SVN.借机学习了一二,跟大家分享一下. Git简单介绍 一句话总结的说,Git是一个开源的分布式版本号控制系统,由Linux内核开发者开发,现已用来管理android等多个大型项目. 设计目标: 高速操作 简单设计 并行开发(上千个) 全然分布式 能力超强(类似Linux内核管理) 和SVN 提到版本号管理系统,自然会想到SVN,假设你原来是使用tortoiseSVN操作,你如今能够用tortoiseGit.表面上看.你会发现tortoiseGit除了多了几个诸如Pus

Git基础知识(二)

前言 本篇是Git基础知识(一)的延续,由于篇幅原因,分成两篇. 我们重新建立一个文件夹,执行git init. 添加一个有三行aaaaa内容的git.txt文件,并commit. 分支 截止目前,我们都是在一个叫做master的分支上工作.Git允许我们创建分支去做一些其他的事儿,而不影响到你的master分支. 1. branch branch命令可以查看分支.创建分支以及删除分支. a. 查看分支 git branch 可以看到我们当前只有一个分支master,也叫主分支,*号代表当前所在