安装git

Linux

Debian

sudo apt install git

Fedora

sudo dnf install git

Windows

直接安装

下载链接

winget安装

winget install --id Git.Git -e --source winget

git初步配置

git config --global user.name "username" #用户名

git config --list #已有配置信息

git config --global user.email youremail #邮箱

git config --global core.editor nvim #默认文本编辑器

git config --global merge.tool vimdiff #差异分析工具

git使用

概念:
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

基本操作

git init #初始化仓库

注:第一次初始提交后才有master分支

git reset HEAD #版本回退,重写暂存区的目录树,被 master 分支指向的目录树所替换

git rm --cached <file>  #直接从暂存区删除文件,工作区则不做出改变

git checkout .  #清除工作区中未添加到暂存区中的改动

git mv    #移动或重命名工作区文件

git checkout HEAD . #用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件

git add file #将文件加入版本控制

git commit -m 'first commit' #提交说明

git status #查看仓库状态

git clone <repo> <directory> #拷贝项目到指定目录

git log #查看历史提交记录
 
git log --show-signature #查看仓库每次提交的签名信息

git blame <path> #查看文件修改记录(列表形式)

git pull #下载源代码合并

git push #上传源代码合并

git fetch #从远程获取代码库

git diff命令

不加参数即默认比较工作区与暂存区

git diff

比较暂存区与最新本地版本库

git diff --cached  [<path>...] 

比较工作区与最新本地版本库

注:如果HEAD指向的是master分支,那么HEAD还可以换成master

git diff HEAD [<path>...]

比较工作区与指定commit-id的差异

git diff commit-id  [<path>...]

比较暂存区与指定commit-id的差异

git diff --cached [<commit-id>] [<path>...] 

比较两个commit-id之间的差异

git diff [<commit-id>] [<commit-id>]

使用git diff打补丁

做补丁

git diff > patch #patch命名随意
git diff --cached > patch #是将我们暂存区与版本库的差异做成补丁
git diff --HEAD > patch #是将工作区与版本库的差异做成补丁
git diff Testfile > patch #将单个文件做成一个单独的补丁

打补丁

git apply patch #打补丁
git apply --check patch #无输出表示可以顺利接受补丁
git apply --reject patch #若有冲突则生成.rej文件,可手动打补丁

git branch命令

列出分支

git branch

创建分支

git branch (branchname)

切换分支

git checkout (branchname)

注:使用分支将工作切分开来,并能够来回切换。

git-checkout

如图,切换到test分支后创建README.md,提交更改,然后切换回master分支后发现README.md消失,再切换回test分支后README.md文件出现。

合并分支

git merge 

注:多次合并到统一分支, 也可在合并之后直接删除被并入的分支。

git标签

注意:提交信代码不会改变这个版本,可以理解为当前版本的提交快照!

发布release版本时使用,使用-a选项会创建一个带注解的标签,没有-a选项也可以执行,但是不会记录打标签的时间以及提交标签的人,所以推荐创建带注解的标签

创建带注解的标签

git tag -a v1.0

提交标签到远程仓库

git push --ZHtags

追加标签
适用于忘了给提交打标签,却发布了release版本的情况 下面命令中d0f2d34是已经发布的提交

git tag -a v1.0 d0f2d34
git log --oneline --decorate --graph

指定标签信息

git tag -a <tagname> -m "message"