git看一次就学会(持续更新中)

Git 原理与使用

Git 安装

如果你的的平台是centos,安装git相当简单,以我的centos7.6为例:

sudo yum -y install git

如果你的的平台是ubuntu,安装git相当简单,以我的ubuntu20.04为例:

sudo apt-get install git -y 

Git 基本操作

1.创建 Git 本地仓库

在要管理的目录下使用

git init

当前目录下多了一个 .git 的隐藏文件, .git 目录是 Git 来跟踪管理仓库的,不要手动修改这个目录里面的文件,不然改乱了,就把 Git 仓库给破坏了。

2.配置 Git

当安装 Git 后首先要做的事情是设置你的 用户名称 和 e-mail 地址,这是非常重要的。配置命令为:

git config [--global] user.name "Your Name" 
git config [--global] user.email "email@example.com" 
# 把 Your Name 改成你的昵称
# 把 email@example.com 改成邮箱的格式,只要格式正确即可。

–global 是⼀个可选项。如果使⽤了该选项,表⽰这台机器上所有的 Git 仓库都会使⽤这个 配置。如果你希望在不同仓库中使⽤不同的 name 或 e-mail ,可以不要 --global 选项,但要 注意的是,执⾏命令时必须要在仓库⾥

查看配置命令为:

git config -l

删除对应配置:

git config [--global] --unset user.name
git config [--global] --unset user.email

3.认识工作区、暂存区、版本库

  • 工作区:是在电脑上你要写代码或文件的目录。

  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,我们

    把暂存区有时也叫作索引(index)。

  • 版本库:又名仓库 (repository) 。工作区有一个隐藏目录 .git ,它不算工作区,而

    是 Git 的版本库。这个版本库里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  • 在创建 Git 版本库时,Git 会为我们自动创建一个唯一的 master 分支,以及指向 master 的一个指针叫 HEAD。(分支和HEAD的概念后面再说)

  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区目录树的文件索引会被更新。

  • 当执行提交操作 git commit 时,master 分支会做相应的更新,可以简单理解为暂存区的目录

    树才会被真正写到版本库中。

  • 由上述描述我们便能得知:通过新建或粘贴进目录的文件,并不能称之为向仓库中新增文件,而只是在工作区新增了文件。必须要通过使用 git add 和 git commit 命令才能将文件添加到仓库中进行管理!!!

.git 的目录结构:

  1. index 就是我们的暂存区,add 后的内容都是添加到这⾥的
  2. HEAD 就是我们的默认指向 master 分⽀的指针,master保存的就是当前最新 的 commit id
  3. objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏ git add 命令 时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的 对象中,就位于 “.git/objects” ⽬录下
  4. objects: 包含了创建的各种版本库对象及内容,可以简单理解为放了 git 维护的所有修改

4.添加文件–场景一

在包含 .git 的目录下新建一个 ReadMe 文件,我们可以使用 git add 命令可以将文件添加到暂存区:

添加一个或多个文件到暂存区:

git add [file1] [file2] ...

添加指定目录到暂存区,包括子目录:

git add [dir]

添加当前目录下的所有文件改动到暂存区:

git add .

再使用 git commit 命令将暂存区内容添加到本地仓库中:

提交暂存区全部内容到本地仓库中:

git commit -m "message" 

提交暂存区的指定文件到仓库区:

git commit [file1] [file2] ... -m "message"
  • 注意 git commit 后面的 -m 选项,要跟上描述本次提交的 message,由用户自己完成,这部分内容绝对不能省略,并要好好描述

  • 可以多次 add 不同的⽂件,⽽只 commit ⼀次便可以提交所有⽂件

查看历史提交记录:

git log
git log --pretty=oneline

类似23807c5…56eed6 是 commit id

查看当前仓库的状态

git status

显⽰暂存区和⼯作区⽂件的差异

git diff [file]

来查看版本库和⼯作区⽂件的区别

git diff HEAD -- [file]

5.版本回退

git reset [--soft | --mixed | --hard] [HEAD]
  • mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内 容,⼯作区⽂件保持不变。

  • soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。

  • hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命 令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。

  • HEAD 说明: 可直接写成 commit id,表⽰指定退回的版本 HEAD 表⽰当前版本, HEAD^上⼀个版本 ,HEAD^^ 上上⼀个版本以此类推…

  • 可以使⽤ ~ 数字表⽰: HEAD~0 表⽰当前版本 ,HEAD~1 上⼀个版本 ,HEAD~2 上上⼀个版本以此类推

  • 版本回退到上一个版本后如果反悔了可以使用git relog,记录着本地每一次命令

    git relog
    
    • Git 版本回退的时候,可以使⽤部分 commit id 来代表⽬标版 本
场景1:工作区已修改还未add,想回退到最近一次修改
git checkout -- [file] #-- 不能丢
场景2:工作区已修改且已经add但未commit
git reset HEAD			#修改暂存区
git checkout -- [file]	#修改工作区
场景3:工作区已修改且已经add且commit
git reset HEAD^ --hard

6.删除文件

确实想要删

只删除工作区的文件没有用,必须删除暂存区的文件且commit

git rm [file]
git commit -m "rm file"

误删了想恢复

git checkout -- [file]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值