Git教程

Git 是一个免费开源的分布式控制系统,使用一个特殊的叫做仓库(repository)的数据库来记录文件的变化。仓库中的每个文件都有一个完整的历史版本记录。

初始化配置

安装完成后,还需要最后一步设置,在命令行输入:

git config –global user.name “Your Name”
git config –global user.email “email@example.com”

“Your Name”: 是每次提交时所显示的用户名,因为Git是分布式版本控制系统,当我们push到远端时,就需要区分每个提交记录具体是谁提交的,这个”Your Name”就是最好的区分。

“email@example.com”: 是你远端仓库的email

–global:用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然我们也可以对某个仓库指定不同的用户名和Email地址。

创建仓库

git init <project-name> 
git mv <file> <new-file>

创建⼀个新的本地仓库(省略 project-name 则在当前⽬录创建)

下面展示了一个例子

mkdir learn-git
cd learn-git
git init

Git的工作区域和文件状态

git的本地数据管理分为三个区域

工作区(working directory):自己电脑上的目录,在资源管理器中能够看到的文件夹就是工作区。简单来说,工作区就是我们实际操作的目录。

暂存区(Staging Area/Index):临时存储区域,用于保存即将提交到Git仓库的修改内容。暂存区就是一个中间区域,用于临时存放即将提交的修改内容。

本地仓库(Local Respository):通过git init命令创建的那个仓库。本地仓库就是Git存储代码和版本信息的主要位置。

添加和提交文件

git init 

创建仓库

git status 

查看仓库的状态

git add 

添加到暂存区

​ e.g. git add . 将当前目录下的所有文件添加到暂存区

​ git ls-files 查看暂存区的内容

git commit    

提交

​ e.g. git commint -m “first initial”

​ Notice: git commit这个命令只会提交暂存区中的文件,而不会提交工作区的其他文件

git log 

查看提交记录

​ git log –oneline 查看简洁的提交记录

Git reset回退版本

Git reset具有以下三种模式

其中mixed是reset命令的默认参数

使用 git log查看提交历史

git reset --soft 版本id

e.g. git reset –soft 5af90b8

git rest --hard HEAD^ 
git rest HEAD^ 

Git中的所有操作都是可以回溯的,可以使用git reflog命令查看我们操作的历史记录,找到错误操作之前的版本号,再使用git rest命令回退到这个版本就可以了

使用Git diff查看差异

git diff     

默认比较的是工作区和暂存区之间的差异内容

git diff HEAD    

比较工作区和本地仓库的差异

git diff --cached 

比较暂存区和本地仓库的差异

git diff 版本id1 版本id2 

用于比较两个版本之间的差异

HEAD是git中重要的概念,他指向分支的最新提交节点

使用Git rm删除文件

Gitignore忽略文件

下面展示了一个例子

首先,创建了一个access.log文件

随后,创建了一个other.log文件

创建.gitignore文件,其中内容为”access.log”,表示access.log文件会被忽略

此时,再调用git staus发现只有other.log被显示“Untracked”状态

下面展示了一个.gitignore的例子,忽略了access.log文件,所有以.log为后缀的文件(*为通配符合),以及temp文件夹

Notice: 修改.gitignore文件后,可能需要先执行git rm -r --cached . 命令后,才会生效。

.gitignore文件的匹配规则

一个例子

Github的使用和远程仓库操作

cd .ssh

ssh-keygen -t rsa -b 4096

总结

关联本地仓库和远程仓库

git remote add <shortname><url> 

添加远程仓库

​ e.g. 将本地的my-reop与github的远程仓库first-repo关联

​ git remote add origin git@github.com:geekhall-laoyang/first-repo.git

​ 这里的origin是我们远程仓库的别名,一般默认的别名都是这个,当然我们也可以指定一个其他的名字

git remote -v

查看当前仓库对应远程仓库的地址和别名

git branch -M main   

指定分支的名称为main。默认的分支就是main,这一行可以省略。

git push -u origin main

把本地的main分支和远程的origin仓库的main分支关联起来

-u 是upstream的缩写,它的意思就是把我们的本地仓库和别名为origin的远程仓库关联起来

git pull <远程仓库名><远程分支名>:<本地分支名>

​ e.g

​ git pull origin main

​ 其中origin main可以省略,意思就是拉取仓库名为origin的main分支

分支简介和基本操作

git branch 

查看当前位于哪个分支

git branch 分支名 

创建新的分支

git switch 分支名

切换分支

git merge <分支2> <分支1>

将分支2合并到分支1

Notice:

上述命令需要先切换到分支1

合并后,分支2仍然存在。如需删除已合并的分支,使用git branch -d 分支名进行删除。如果删除未合并的分支,则使用git branch -D 分支名进行强制删除。

解决合并冲突

回退和rebase

Reference:

[1] 【GeekHour】一小时Git教程 https://www.bilibili.com/video/BV1HM411377j/?spm_id_from=333.337.search-card.all.click&vd_source=eb2aff91d0c138676172d1f9746b9f1e

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦