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、j ava 开发通用模板

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #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 |

相关推荐
小龙报7 小时前
《彻底理解C语言指针全攻略(3)》
c语言·开发语言·windows·git·创业创新·学习方法·visual studio
前端备忘录10 小时前
创建好git项目仓库后如何将本地项目传上去
git
代码or搬砖12 小时前
Git学习笔记(二)
笔记·git·学习
sineiy12 小时前
git使用教程
git
@卞14 小时前
版本控制器 git(5)--- git 标签管理
git
灰飞肥鱼15 小时前
rebase 与 merge
git
梦道长生16 小时前
在单台电脑上管理多个 GitHub 账户并解决推送问题
git·github
Dreamboat-L18 小时前
Git基本命令的使用(超详细)
git
~央千澈~1 天前
git执行git remote关联了仓库后的.git文件夹目录下到底是些什么东西?优雅草卓伊凡
git