存储系统
- 集中式
- 分布式
初始化配置/查看初始化配置
配置:
bash
git config --global user.name <username>
git config --global user.email <email>
git config --global credential.helper store #使用这条命令保存用户名和密码,就不用每次输入了
查看配置:
bash
git config --global user.name
# 或者查看全部的全局配置
git config --global --list
在本地新建仓库
两种方式把文件夹变成仓库:
- 在本地创建一个新仓库
- 从远程服务器上拉一个仓库
在本地创建一个新仓库
bash
mkdir learn_git
cd learn_git
git init #把当前文件夹创建成仓库
# 返回:Initialized empty Git repository in /Users/minghongsun/Desktop/learn_git/.git/
ls -a
# 如果存在.git目录,仓库创建成功
# 或者
git init <文件路径> # 将制定文件变成git仓库
.git
.git
文件夹是 Git 仓库的核心部分,存储了所有与 Git 版本控制相关的数据和配置。rm -rf .git
的话,当前目录就不再是一个git仓库了
Git工作区域和文件状态
工作区域
- 工作区(Working Directory)
- 暂存区(Staging Area)
.git/index
- 本地仓库(Local Repository)
.git/objects

将文件添加到本地仓库
bash
# 查看仓库状态
git status
# 添加文件到暂存区
git add
# 可以使用通配符.添加当前所有的untracked file
git add .
# 将暂存区文件提交到本地仓库
git commit # 后面不加-m参数,就默认通过vim的形式添加提交信息
git commit -m "备注的提交信息"
# 查看全部的提交到本地仓库的记录
git log
git log --oneline # 简洁模式
git reset 回退版本

bash
# git reset 后面加版本号即可
#比如
git reset --soft eded8167a29549186acf4397fe5926dcdd95ab35
git reset --hard eded8167a29549186acf4397fe5926dcdd95ab35
git reset --mixed eded8167a29549186acf4397fe5926dcdd95ab35
bash
# 查看被跟踪的文件,包括暂存区和工作目录中的文件。
git ls-files
# 查看工作区内容
ls
# 查看对本地仓库的修改记录
git log
bash
# 撤回`git add .`操作,即文件提交到暂存区,但还没提交到本地仓库,没有版本号的情况下
git reset <file name>
git reflog
在git中误操作了不要担心,任何操作都是可以回溯的
使用git reflog
查看所有的操作历史,然后根据版本号回溯即可
# 取消操作只需要版本号即可,不需要给模式参数
git reset 7a18411

git diff

比较差异大部分用图形化工具解决,比如vscode,这条命令了解即可
如何从版本库中删除文件
方法一:直接在工作区删除文件,然后提交到版本库即可
bashrm -rf file git add . git commit -m 'delete file'
方法二:使用
git rm
命令- 注意
git rm
只是从工作区和暂存区中删除,需要git commit
来删除版本库中的文件
bash# 删除版本库中的文件 git rm file.txt # 查看版本库状态,会显示deleted file.txt,如下图 git status # 但当前只是从工作区和暂存区删除了,需要commit来删除版本库中的文件 git commit -m 'delete file.txt'
- 注意
.gitignore文件

在
.gitignore
文件中列出需要忽略的文件的模式,它们就不会被提交到版本库bash# 在.gitignore文件中,使用通配符,配置需要忽略的文件模式 echo '*.log'>.gitignore # 创建一个a.log文件用于测试 echo 'aaa'>a.log #查看仓库状态,会发现只有.gitignore文件需要被追踪,a.log文件被忽略了 git status #如下图所示

注意:
.gitignore
文件生效的前提是,这个文件不能已经被提交到版本库了,否则无效。.gitignore
中添加文件夹bashecho 'temp/' > .gitignore #文件夹以斜线为结尾
