Git学习,只此一篇,便可掌握Git。

1、Git的基本概念

1、版本库
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

2、HEAD与分支、提交版本的关系
(1)、一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
在这里插入图片描述

(2)、当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分分支在dev上
在这里插入图片描述

Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。
在这里插入图片描述

2、Git环境搭建

(1)、环境配置
初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码。

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

(2)、创建本地空仓库
git init
创建一个文件夹,去文件夹下执行该命令。初始化当前目录为仓库,初始化后会自动将当前仓库设置为master

3、提交修改

3.1 git add 文件名
将工作区的代码添加到暂存区(缓冲区)

3.2 git commit -m “修改说明”
将暂存区内容提交到本地仓库

3.3 git status
查看工作区中文件当前状态,会显示工作区中那些文件被修改过,但没有add及以及已经add 但是没有commit

3.4 git diff
查看修改内容

4、提交日志查看

git有log与reflog两个日志可以用来查看提交记录,以及帮助我们使用git回滚。

4.1、git log

用于显示当前分支的提交历史。它按照提交时间的先后顺序列出了所有的提交记录,包括每次提交的作者、日期、提交信息等。默认情况下,git log 会以最新的提交记录开始显示。
(git log是显示当前的HEAD和它的祖先的提交历史,递归是沿着当前指针的父亲,父亲的父亲,…,这样的原则。)

4.2、git reflog
用于显示引用日志,即包括分支、标签等引用的移动和更新历史。它会显示出所有的引用变动,包括已删除的分支和标签。git reflog可以找回已经被删除的提交。(通俗的讲reflog是记录HEAD的变动)

注:HEAD@{2}表示HEAD指针在两次移动之前的情况;

总结来说,git log 主要用于查看提交历史,而 git reflog 则主要用于查看引用的变动历史,包括已删除的引用。

4、git回滚场景

4.1、工作区修改完,未git add到暂存区

git checkout --文件名 

撤销工作区的修改,用暂存区覆盖工作区

4.2、代码修改git add到暂存区,还未commit
方式一:

git reset HEAD readme.txt   # 先用 Head 指针覆盖当前的暂存区内容
git checkout --文件名        # 再用暂存区内容覆盖工作区内容

先撤销暂存区的修改,再将工作区的修改撤销。

方式二:

git reset --hard commit_id

使用直接使用head覆盖当前暂存区和工作区。
(注:这个版本号应该是最新的版本号)

4.3、已经commit,还未git push

git reset --hard <last_commit_id>

覆盖本地仓库、暂存区和工作区
(注:这个版本号应该是上一次的版本号)

4.4、已经git push
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z91i1rmF-1690123473257)(image.png)]

5、拉取

(1)、clone拉取

git clone <url>
clone:默认将整个远程版本库本库克隆到本地


git clone -b 分支名称 <url>
-b:指定将某一个远程分支拉取到我们本地,而且拉取的本地分支自动和远程同名分支建立追踪关系

6、分支

6.1、创建分支

(1)、git checkout -b dev
使用git checkout -b参数来创建一个分支,创建完成分支后会自动切换过去

(2)、git branch dev
git branch 如果后面跟着名字则会创建分支,但不会切换。


git checkout -b feature # 创建feature分支并切换过去

等于于
git branch featur # 创建feature分支
git checkout feature #切换到feature分支

6.2、查看分支

git branch:显示本地分支

git branch -a:显示所有分支,绿色为本地分支,红色为远程分支

git branch -v:显示本地分支的提交信息及提交版本号

git branch -vv: 在-v的基础上显示与当前分支建立联系的远程分支

6.3、切换分支

(1)、git checkout 分支名
当我们想切换分支可以使用git checkout来切换,如刚刚我们创建了一个分支dev并切换了过去,现在切换回masterk

git checkout master
6.4、合并分支

(1)、git merge 分支名
将分支合并到master,需要切换到master分支,并执行git merge 分支名就可以了。

6.5、删除分支

(1)、删除本地分支
git branch -D 分支名

(2)、删除远程分支
git push origin --delete 分支名
注意这里的远程分支名不需要再加origin,输入分支名就可以了

5、推送

(1)、push

git push <远程主机名> <本地分支名>:<远程分支名>

例:git push origin dev:test

意思是将本地的dev分支上的代码推送到远程主机名为origin中test的分支上。如果远程的test分支不存在,则会被创建,这也是一种创建远程分支的办法。

注:

1、若远程分支名和本地分支名相同,可以省略远程分支名。

2、如果本地分支与远程分支已经建立了追踪关系,那么可以省略远程主机名和远程分支名

3、当我们已经在dev分支下,且dev分支与远程分支已经建立了追踪关系,那么可以省略本地分支名和远程分支名

6、合并冲突

(1)、每次合并分支后,将分支删除。之后再修改代码,拉取新的分支。
如果不将分支删除,而是基于分支继续修改,合并时容易发生冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值