Skip to content

存储系统

  • 集中式
  • 分布式

初始化配置/查看初始化配置

配置:

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
image-20240918212711301

将文件添加到本地仓库

bash
# 查看仓库状态
git status

# 添加文件到暂存区
git add 
# 可以使用通配符.添加当前所有的untracked file
git add .

# 将暂存区文件提交到本地仓库
git commit        # 后面不加-m参数,就默认通过vim的形式添加提交信息
git commit -m "备注的提交信息"

# 查看全部的提交到本地仓库的记录
git log
git log --oneline     # 简洁模式

git reset 回退版本

image-20241221213258137
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
image-20240919193538708

git diff

image-20240919201150968

比较差异大部分用图形化工具解决,比如vscode,这条命令了解即可

如何从版本库中删除文件

  • 方法一:直接在工作区删除文件,然后提交到版本库即可

    bash
    rm -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'
    image-20240919203544695

.gitignore文件

image-20240919203728645
  • .gitignore文件中列出需要忽略的文件的模式,它们就不会被提交到版本库

    bash
    # 在.gitignore文件中,使用通配符,配置需要忽略的文件模式
    echo '*.log'>.gitignore
    
    # 创建一个a.log文件用于测试
    echo 'aaa'>a.log
    
    #查看仓库状态,会发现只有.gitignore文件需要被追踪,a.log文件被忽略了
    git status
    
    #如下图所示
image-20240919204204228
  • 注意:.gitignore文件生效的前提是,这个文件不能已经被提交到版本库了,否则无效。

  • .gitignore中添加文件夹

    bash
    echo 'temp/' > .gitignore #文件夹以斜线为结尾
image-20240919205745423