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

Git介绍和使用

一、Git仓库的基本概念

1、远程仓库(Remote):

也叫作资源库,是远程机器上的代码库,用于做不同版本库文件交换更新。如Gitlab,GitHub,gitee。

2、本地库(Repository):

是用户在本地创建的目录,拥有远程库的一个快照,由工作区和版本库构成。

Workspace:本地库的根目录中除.git目录以外的内容,存储内容的实际文件。

stage/Index:也叫做缓存区,暂存信息存放在.git目录"下的index文件(.git/index)中,用于临时保存内容的修改;

.git目录:是本地库的根目录中的一个隐藏目录.git,用于记录版本信息,Git进行版本控制所需要的文件,则都放在.git文件夹中;

3、分支(Branch):

本地库中默认创建一个主(master)分支,分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

本地库和远程库的关系

开发人员通过Git命令来管理代码,最常用的6个命令如下图所示:

二、git仓库的工作流程

从一般开发者的角度来看,使用Git的工作流程是:

  1. 克隆远程库:从远程库上克隆完整的Git仓库(包括代码和版本信息)到本地;
  2. 在本地库上修改代码:在本地库上根据不同的开发目的,创建分支,修改代码;
  3. 提交到分支:在本地分支上提交代码;
  4. 把修改合并到本地主分支:在本地库上提交更新,也就是说,把修改合并到本地主分支;
  5. 把远程库合并到本地主分支:把远程库上的最新代码fetch下来,跟本地主分支合并,如果存在冲突,那么解决冲突。
  6. 把本地主分支提交到远程库:生成补丁(patch),把补丁发送给远程库。

三、Git的命令

1、创建版本库

创建一个版本库也非常简单,如下我是D盘下 目录下新建一个testGit版本库。

右键通过命令行的方式打开窗口

通过命令 git init 把这个目录变成git可以管理的仓库

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。.git里面内容如下:

2、添加文件或修改文件

首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不例外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。

01、创建文件test.txt, 此刻文件在工作区(WorkSpace)

通过git status可以查看文件追踪的情况

02、用命令 git add test.txt添加到暂存区里面去。

如果要提交多个文件

方式:

        1、git add + 所有提交的文件名

        2、git add .

        3、git add -A

03、提交文件到主分支

git commit -m 'first commit'

注意:注释是必须要写的。

现在我们已经提交了一个test.txt文件了,下面可以通过命令git status来查看是否还有文件未提交

注:用户操作文件之后,文件处于工作区中,通过使用git add . 来把操作文件提交到暂存区,再通过git commit -m "注释"来将暂存区的文件提交到版本库。

04、修改文件,在文件中加入一行。查看git的状态

通过git add . 可以将修改后的文件提交到暂存区

3、版本回退

1、日志查看

可以通过git log 来查看历史记录

我们也可以使用命令 git log  pretty=oneline 命令来使输出内容变得更有可读性,格式更美观

2、​​​​​​​版本回退和撤销

版本回退

方式:

        回退一次:git reset --hard HEAD^

        

        回退两次:git reset --hard HEAD^^

        最常用回退方式:git reset --hard sha1值(sha1值为前七位)

        

回退撤销

通过git reflog获取到每次操作的版本号

使用git reset --hard 版本号 来实现回退撤销

4、删除文件

使用git rm test.txt命令,删除的文件直接进入暂存区。(此刻需要注意,如果使用rm删除不在暂存区,需要git add才会进入暂存区。如果进入暂存区可以退回工作区,使用下面命令 git reset HEAD test.txt)

提交之后文件被删除

5、Git配置信息Config

1、config概述

在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类:

1、仓库级别 local 【优先级最高】

2、用户级别 global【优先级次之】

3、系统级别 system【优先级最低】

git 仓库级别对应的配置文件是当前仓库下的.git/config 

git 用户级别对应的配置文件是用户宿主目录下的~/.gitconfig

git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig

我们可以在cmd命令提示符中输入以下查看配置信息

git config --local -l

git config --global -l

git config --system -l

三种config的优先级处理:
01、在同一台电脑上属于一个人的操作范围时:可以使用用户级别的config足矣。因为此电脑可以直接登录此人的账号来进行版本提交,而不会发生冲突

02、当一台电脑属于多人使用,并且多人负责此电脑上的多个项目时:只能使用仓库级别的config。因为每个人都在此电脑上进行提交,因此不能使用一个账号的用户级别config来进行提交。无法确定项目和个人的匹配问题。只能使用优先级最高的仓库级别config来针对每个仓库来提交代码内容。这种形式才能够实现每个config针对每个项目,而不会出现项目和提交者之间的错乱。

2、​​​​​​​config修改

演示修改用户名和邮箱:

git config --global user.name "zhangsan"

git config --global user.email "zhangsan@126.com"

注意不要手动修改 每个级别的配置文件,要用命令。

配置文件的权重是仓库>全局>系统。Git会使用这一系列的配置文件来存储你定义的偏好,它首先会查找/etc/gitconfig文件(系统级),该文件含有对系统上所有用户及他们所拥有的仓库都生效的配置值。接下来Git会查找每个用户的~/.gitconfig文件(全局级)。最后Git会查找由用户定义的各个库中Git目录下的配置文件.git/config(仓库级),该文件中的值只对当前所属仓库有效。

6、.gitignore文件

在项目中,我们可能一起提交多个文件

·  git add -A  提交所有变化

·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

·  git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。
此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。
注意:在windows下可以创建文件名为.gitignore.,保存之后系统会自动重命名为 .gitignore

​​​​​​​1、格式规范

·  (1)所有空行或者以注释符号 # 开头的行都会被 Git 忽略

·  (2)可以使用标准的 glob 模式匹配

·  (3)匹配模式最后跟斜杠(/)说明要忽略的是目录

·  (4)要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)进行取反

2、​​​​​​​案例使用

01、生成.gitignore文件

查看状态发现test.doc不在工作区

提交也不会进入暂存区

对于.gitignore文件的使用,比较方便的方法:直接创建一个模版内容进行使用。个人使用一台电脑进行Java开发只需要使用一个.gitignore文件来对所有的java项目进行管理。

一定要养成在项目开始就创建.gitignore文件的习惯。

​​​​​​​3、java开发通用模板

#java

*.class

#package file

*.war

*.ear

*.zip

*.tar.gz

*.rar

#maven ignore

target/

build/

#eclipse ignore

.settings/

.project

.classpatch

#Intellij idea

.idea/

/idea/

*.ipr

*.iml

*.iws

# temp file

*.log

*.cache

*.diff

*.patch

*.tmp

# system ignore

.DS_Store

Thumbs.db

http://www.dtcms.com/a/474183.html

相关文章:

  • LeetCode经典算法题解详解
  • Java基于SpringBoot的农场管理系统小程序【附源码、文档说明】
  • 建站系统社区网站建设建站在线建站
  • 数字政府智慧政务服务跨省通办建设方案PPT(46页)
  • 宁波市内做公司网站的公司网站建设与管理技术发展
  • WPS国际版 18.21.1| 可使用邮箱登录,大部分功能已经解锁,比国内版简洁干净
  • 搭建公司网站郑州小程序开发外包公司
  • 无监督学习驱动的遗留系统重构方法论
  • 分析AI代码助手对开发流程的重构与伦理挑战
  • 南京网站建设公司 雷仁网络吉林手机版建站系统开发
  • XML Schema 指示器:深入解析与最佳实践
  • 网站建设方案主要有做网站一定要注册公司吗
  • CSS 属性选择器
  • UI设计(三)按实际输出内容递增的序号效果——东方仙盟筑基期
  • 计算机网站建设与维护wordpress 酒主题
  • YDWE防守图制作教程
  • 专业的聊城做网站费用网站开发三剑客
  • 鸿蒙NEXT压缩与解压全攻略:从图片优化到文件处理
  • 网站建设 重庆品牌营销的定义
  • Ubuntu安装JDK与Maven和IntelliJ IDEA
  • 使用el-table实现行内编辑功能
  • 虹口高端网站建设中英文网站是咋做的
  • Linux 之 【基本指令 与 shell命令以及运行原理】
  • AI虚拟细胞(AIVCs)赋能生命科学:三大数据支柱与闭环学习破解传统实验困局
  • 茂名营销型网站制作公司做灯笼手工简单做法
  • 长沙网站排名优化二极管 东莞网站建设
  • 【Linux探索学习】第三篇Linux的基本指令(3)——开启Linux学习第三篇
  • 牛客算法_模拟
  • 多线程 —— CAS 原理
  • 兰州做网站的有哪几个网站后台登陆不了