安装和初始化配置

git版本

git -v 

配置用户名和邮箱

git config --global user.name mikannse
git config --global user.email mikannse@gmail.com

自动保存用户名和密码

git config --global credential.helper store

查看git配置信息

git config --global --list

新建仓库

git init 或者git clone

工作区域和文件状态

本地分为三个区:

工作区:即计算机上的目录

暂存区(index索引):用于保存即将提交到git仓库的修改内容

本地仓库:即git仓库,是git存储代码和版本信息的主要位置

列举工作目录中各种状态下的文件

git ls-files

添加和提交文件

添加仓库

git init

查看仓库状态(分支,文件,文件状态)

git status

添加到暂存区

git add

提交

git commit -m "提交的信息"

也可以使用-a参数,自动添加已被追踪的文件到暂存区,则不再需要手动add

git commit -am "message"

查看提交记录

git log

简洁查看

git log --oneline

回退版本

保留工作区和暂存区

git reset --soft 版本id

不保留工作区和暂存区

git reset --hard 版本id

保留工作区,不保留暂存区

git reset --mixed 版本id

HEAD^表示回退到上一个版本,HEAD表示分支的最新提交节点

查看操作的历史记录

git reflog

再通过git reset 回溯

查看差异

查看三个区域之间,不同版本,不同分支之间的差异

不加参数默认比较工作区和暂存区的内容

git diff

比较工作区和版本库之间的差异

git diff HEAD

比较暂存区和版本库的差异

git diff --cache

比较两个版本之间的差异

git diff id1 id2

比较上(几)个版本和这个目前的差异

git diff HEAD~(1,2,3) HEAD

git diff 后加上文件名,只会查看这个文件的差异内容

比较分支之间的差异

git diff <branch_name1> <branch_name2>

从版本库删除文件

方法一

删除本地工作区的文件,更新暂存区然后提交到仓库

方法二

同时删除工作区和暂存区的内容

git rm 

然后提交到仓库区

或者仅删除暂存区的内容

git rm --cache

忽略文件

.gitignore

不会提交到版本库的文件(除了已经提交到版本库的文件)

例如:系统或者软件自动生成的软件,编译产生的中间和结果文件,运行生成的日志,缓存文件以及隐私文件

使用blob语法写在.gitignore

例子:

#忽略所有的.a文件
*.a

#但跟踪所有的lib.a文件
!lib.a

#只忽略根目录下的TODO文件,不而忽略子目录下的TODO文件
/TODO

#忽略任何目录下名为builf的文件夹
build/

#忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt

#忽略doc/目录及其所有子目录下的.pdf文件
doc/**/*.pdf

分支

创建新的分支

git branch <branch_name>

查看当前处于哪个分支

git branch

切换分支

git switch <branch_name>

合并一个分支到当前分支

git merge <branch_name>

删除一个分支,-d删除已经被合并的分支,-D删除未被合并的分支

把当前分支重定基到另一分支

git rebase <branch>

Github

远程仓库

ssh配置和克隆仓库

新建ssh密钥,可以通过更改密钥名字来选择新建一个密钥

ssh-keygen -t rsa -b 4096

复制.pub公钥文件内容

在github settings中添加ssh公钥内容

如果是新建的密钥,那么需要在~/.ssh/config添加

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile 私钥目录

新建仓库之后可以通过ssh协议克隆到本地进行关联

git clone git@github.com:username/repo.git

本地仓库

先创建本地仓库

git remote add <仓库别名默认origin> git@github.com:username/repo.git

查看当前仓库与远程关联的远程仓库

git remote -v

指定分支的名字为main(默认即为main,可以省略)

git branch -M main

将本地的main分支和远程仓库的main分支相关联

git push -u origin main:main

拉取远程仓库分支到本地分支再进行合并

git pull <shortname> main:main

只拉取远程仓库分支但不合并

git fetch

本地仓库关联多个远程仓库

git remote add <shortname> 仓库地址

教程文字版整理自BilibiliUP主GeekHour