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