配置参数

省略(Local):本地配置,只对本地仓库有效
​
--global:全局配置,所有仓库生效
​
--system:系统配置,对所有用户生效(通常不使用)

保存用户名和密码

git config --global credential.helper store

查看git配置

git config --global --list

创建git仓库

//本地创建一个空仓库,如果后面跟目录名称则会在当前目录下再创建一个目录,新创建的目录就是我们的git 仓库
git init dir

工作区域和文件状态

git的工作区域分为三个,分别是工作区(Working Directory)、暂存区(Staging Area/Index)、本地仓库(Local Repository);

git-工作状态.jpg

文件的状态分为四类,分别是未跟踪(Untrack)、未修改(Unmodified)、已修改(Modified)、已暂存(Staged)

git-文件状态.jpg

添加和提交文件

//查看仓库状态
git status
​
//添加到暂存区
//可以使用通配符,如:git add *.txt
//也可以使用目录,如:git add .
git add file
​
//提交到仓库 需要使用 -m 指定提交的信息
//只会提交暂存区的文件,工作区其他文件不会进行提交
git commit -m "提交信息"
git commit -a -m "提交信息"     //一次完成添加暂存和提交两个动作;-a -m 也可直接省略为 -am

查看历史提交记录

//后面可以跟 --oneline参数查看简洁的提交记录
git log
​
//查看历史操作记录
git reflog

回退版本 reset

//工作区和暂存区的文件都会保留
git reset --sort 版本id
​
//工作区和暂存区的文件都不会保留
git reset --hard 版本id
​
//工作区的文件保留暂存区文件不保留
//默认使用mixed
git reset --mixed 版本id

git diff查看差异

HEAD 代表当前分支的指针
HEAD^ 代表当前版本的上个版本
HEAD~n 代表当前版本的上n个版本
​
//查看工作区和暂存区之间的差异
git diff
​
//查看工作区和版本库之间的差异
git diff HEAD
​
//查看暂存区和版本库之间的差异
git diff --cached
​
//查看两个版本之间的差异 版本1到版本2之间的改动
git diff 版本id1 版本id2
​
//查看当前版本和上一个版本之间的差异
git diff HEAD~ HEAD
git diff HEAD^ HEAD
​
//查看两个版本之间某个文件的差异
git diff 版本id1 版本id2 file

删除文件 rm

//Linux删除文件,删除后更新到暂存区即可
rm file
git add file
​
//上面方法比较繁琐,因此我们可以直接使用git给我们提供的命令进行删除
//直接将文件从工作区和暂存区都删除掉
git rm file
​
//将文件从暂存区删除,但保留在工作区中
git rm --cached file
​
//递归删除某个目录下所有的子目录和文件
git rm -r *
​
//当我们将文件删除掉之后一定要记得提交,否则我们的仓库中文件依然会存在
git commit -m commitMessage

.gitignore忽略文件

//直接在文件中添加想要忽略的文件即可,可以使用通配符,但是已经添加到版本库中的文件不会忽略
空行或者以#开头的行会被Git忽略。一般空行用于可读性的分隔,#用作注释
使用标准的Blob模式匹配,例如:
    星号 * 通配任意个字符
    问号 ? 匹配单个字符
    中括号 [] 表示匹配列表中的单个字符,如:[abc]表示a/b/c
    两个星号 ** 表示匹配任意的中间目录
    中括号可以使用短中线连接,比如:
    [0-9]表示任意一位数字,[a-z]表示任意一位小写字母
    感叹号 ! 表示取反
​
//忽略所有以log结尾的文件
*.log
//忽略文件夹,需要以 / 结尾
temp/

克隆仓库

//克隆仓库
git clone repo-address
​
//推送更新内容
git push remote branch
​
//拉取更新内容
git pull remote

关联本地仓库和远程仓库

//将远程仓库地址添加到本地仓库
git remote add <远程仓库名> <远程仓库地址>
​
//关联好后可以使用下面这行命令查看当前仓库所对应的远程仓库的别名和地址
git remote -v
​
//推送代码到远程仓库
git push -u <远程仓库名> <分支名>
​
//拉取远程仓库代码到本地,若远程分支名和本地分支名相同,则写一个即可
git pull <远程仓库名> <远程分支名>:<本地分支名>
​

分支基本操作

//查看分支
git branch
​
//创建分支
git branch <分支名>
​
//切换分支
git switch <分支名>
git checkout <分支名/文件名>  //由于checkout命令也可用于恢复文件,所以若分支名和文件名相同会产生歧义,默认为切换分支,所推荐使用`switch`命令进行分支切换
​
//合并分支,把想要合并的分支合并到当前所在的分支中
git merge <分支名>
​
//查看分支图
git log --graph --oneline --decorate --all
//由于上面代码太长,所以我们可以使用别名:alisa graph="git log --graph --oneline --decorate --al",这样以后就可以直接用graph进行查看了
​
//删除分支
git branch -d <分支名>     //已合并的分支
git branch -D <分支名>     //未合并的分支

解决合并冲突

如果两个分支对同一文件的同一处进行了修改就会产生冲突

解决方法:

  1. 手工修改冲突文件,合并冲突内容

  2. 添加暂存区 git add file

  3. 提交修改 git commit -m "message"

中止合并:当不想继续执行合并操作时可以使用下面的命令来中止合并过程

git merge --abort

回退和Rebase

//该操作会将当前分支的提交应用到指定分支的基础上
//合并完后`当前分支`会合并在`指定分支名`后,形成一条直线
git rebase <分支名>
​
//恢复分支
git checkout -b <分支名> <提交ID>
 

Rebase和Merge的优缺点比较

Merge

  • 优点:不会破坏原分支的提交历史,方便回溯和查看

  • 缺点:会产生额外的提交节点,分支图比较复杂

Rebase

  • 优点:不会新增额外的提交记录,形成线性历史,比较直观和干净

  • 缺点:会改变提交历史,改变了当前分支branch out的节点。避免在共享分支使用

以上内容讲述了git的简单应用,如果看完后仍然不知道怎么用的话可以参考下面链接的视频,教你快速使用git。

[两小时git教程]  https://www.bilibili.com/video/BV1HM411377j