Git基础

git学习地址:https://git-scm.com/book/en/v2

一、git基础

1.1git安装

参照git学习地址中的1.5

1.2使用git之前需要做的最小配置

$ git config --global user.name "your_name"
$ git config --global user.email your_email@domain.com

每一个git提交都会使用这些信息,它们会写入到每一次提交中,不可更改

config的三个作用域:

缺省等同于local

$ git config --local   #local只对某个仓库有效
$ git config --global  #global对当前用户所有仓库有效
$ git config --system  #system对系统所有登录的用户有效

显示config的配置,加--list

$ git config --list --local
$ git config --list --global
$ git config --list --system

1.3获取git仓库并配置local用户信息

两种方式:

  1. 将尚未进行版本控制的本地目录转换为git仓库(已有项目代码)
  2. 从其他服务器克隆一个已经存在的git仓库
  3. 新建的项目直接用Git创建

方式一:

$ cd 项目代码所在的文件夹
$ git init

$ git init 

该命令将创建一个名为 .git 的子目录,这个子目录含有初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,仅仅是做了一个初始化的操作,项目里的文件还没有被跟踪。 (参见 Git内部原理来了解更多关于到底 .git 文件夹中包含了哪些文件的信息。)

如果在一个已存在文件的文件夹(而非空文件夹)中进行版本控制你应该开始追踪这些文件并进行初始提交。 可以通过 git add 命令来指定所需的文件来进行追踪,然后执行 git commit

$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'

方式二:

$ git clone <url>
比如:要克隆 Git 的链接库 libgit2,可以用下面的命令:
$ git clone https://github.com/libgit2/libgit2

方式三:

$ cd 某个文件夹
$ git init your_project #会在当前路径下创建和项目名称同名的文件夹
$ cd your_project

eg:

文件夹:I:\GitLearning

此时建立仓库git_learning,在已有global用户信息的情况下,在该仓库设置local用户信息

复制项目文件readme至仓库git_learning中,并提交:

可以看到提交时git错误信息——没有跟踪文件,追踪文件:

可以看到文件被追踪后已经存在于暂存区当中,此时提交文件并查看git日志:

通过日志可以看到提交信息,包括commit的id号、提交作者Author和email、提交时间

可以看到,如果已经设置好了global参数的同时,在新建的仓库额外设置了local参数,那么local的优先级高于global

1.4commit工作区和暂存区

工作区——>暂存区——>git目录

git add -u 将工作区当中git已经跟踪了的所有文件一次性提交到暂存区,然后git commit -m ‘提交原因’命令提交到仓库中。

Git 有三种状态,文件可能处于其中之一: 已提交(committed)已修改(modified)已暂存(staged)

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全地保存在本地数据库中。

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

暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

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

基本的 Git 工作流程如下:

  1. 在工作区中修改文件。
  2. 将想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
  3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

1.5文件重命名

使用git mv 目标文件名 更改后文件名

1.6通过git log 查看版本演变历史

$git log --all --graph 以图形化的方式查看版本历史
$git log --oneline --all
$git log --oneline  -n4 #只查看最近4次
$git branch -v #查看本地有多少个分支
$git log --oneline --all 分支名 #此时分支是不起作用的,all优先级更高
$git help --web log #浏览器查看log参数

1.7  .git目录

HEAD文件使用cat 文件名查看文件,内容是一个引用,指向refs/heads/temp的引用,使用git brach -v查看本地分支,可以看到当前所在分支是temp分支

使用git checkout 分支名 切换分支,再查看HEAD文件内容,发现应用指向master分支

HEAD告诉我们现在正在工作的分支

config: 存放了和本地仓库相关的配置信息

refs

refs目录下有heads文件夹和tags文件夹,在介绍HEAD文件时,HEAD代表整个仓库正在工作在哪个分支,其文件内容是一个引用,指向refs/heads目录下的某个文件

可以看到heads下存放的是以分支名命名的文件,使用cat命令查看文件内容,用git cat-file -t 对象名 查看对象的类型

refs/heads目录下的文件存放的是以分支名命名的文件,文件内容存放的是一个哈希值,代表指向哪个commit

tags目录下存放的是以标签名命名的文件,文件内容存放的对象所属类型是tag,使用git cat-file -p 对象名 查看对象内容

objects

git会做自我梳理的过程,将松散的文件打包,打包后放到pack目录下;另外一种类型的目录是以两个字符命名的,将两个字符与该目录下的字符拼接在一起形成一个哈希值,查看其类型,是blob(文件类型)或者tree类型

1.8分离头指针detached HEAD

分离头指针是指做的变更没有基于某个分支branch,在这种情况下切换分支时,分离头指针产生的commit很可能被git当作垃圾清理掉

 在分离头指针上产生的commit,切换分支时,git会提示是否为其创建branch分支以保留所做修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值