Git学习

本文详细介绍了Git的基本使用方法,包括环境配置、工作流程、项目创建及克隆等。还讲解了如何进行文件操作,如添加、提交文件,以及如何忽略特定文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Git

Git环境配置

查看当前环境配置

​ 查看全部环境配置

git config -l

​ 查看系统配置

git config --system -l

​ 查看用户配置

git config --global -l

​ 第一次使用的时候,查看用户配置会显示:

fatal: unable to read config file 'C:/Users/DELL/.gitconfig': No such file or directory

​ 没有那个配置文件,等会配置完就有了。

设置用户配置

git config --global user.name "Fandos"
git config --global user.email "fandos@qq.com"

​ 设置用户名和邮箱,用真实的邮箱,后面还会用到。

​ 然后那个用户配置文件里面就会显示:

[user]
	name = Fandos
	email = fandos@qq.com

​ 这就配置好了。

Git理论

​ Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

图片

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

本地的三个区域确切的说应该是git仓库中HEAD指向的版本:

image-20210716172108975

  • Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
  • WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。

工作流程

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

image-20210716172156724

​ 理论部分我就不写了,这是狂神的原笔记。

Git项目创建及克隆

​ 在当前目录新建一个Git仓库

git init

​ 克隆远程目录

git clone [url]

Git文件操作

git status

​ 查看当前被跟踪、没有被跟踪的文件。返回:

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

​ 这里显示没有正在跟踪的文件,有一个hello.txt文件没有被跟踪。

git add .

​ 添加目录中的所有文件进入暂存区。此时再查看是不是有暂存,返回:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

​ 现在这个就是待提交的文件了,已经在暂存区中。

​ 提交暂存区的内容到本地仓库:

git commit -m "(备注信息)"

​ 现在再查看暂存,返回:

On branch master
nothing to commit, working tree clean

忽略文件

​ 有时候我们不想把某些文件纳入版本控制中,比如:数据库文件

,临时文件,设计文件等

​ 在主目录下建立“.gitignore"文件,此文件有如下规则:

​ 1.忽略文件中的空行或者以井号(#)开始的行将会被忽略

​ 2.可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号(【abc】)代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。

​ 3.如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

​ 4.如果名称的最前面是一个路径分割符(/),表示要忽略的文件在此目录下,而子目录的文件不忽略。

​ 5.如果名称的最后面是一个路径分割符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

#为注释
*.txt      #忽略所有 .txt结尾的文件,这样的话上传就不会被选中
!lib.txt   #但lib.txt除外
/temp      #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/     #忽略build/目录下的所有文件
doc/*.txt  #会忽略 doc/notes.txt 但不包括                          #doc/server/arch.txt

码云

生成公钥

​ 先打开码云

image-20210726203116460

​ 在用户文件夹下新建一个.ssh文件夹,如我的文件夹目录:C:\Users\DELL\.ssh,在.ssh文件夹里面打开git,输入:

ssh-keygen

​ 如果想用加密算法:

ssh-keygen -t rsa

​ 然后一直回车确定就可以了。

​ 这时打开生成的文件里面的id_rsa.pub。pub公共,懂吧。

image-20210726202857283

​ 把里面的内容复制到这里

image-20210726211906674

​ 添加成功后就会这样:

image-20210726212008950

新建一个自己的仓库

image-20210726212133304

​ 设置里面的许可证啥的随便勾选吧,具体也不需要。

​ 克隆创建的仓库:

git clone https://gitee.com/Fandos_delay/git-learning.git

​ 如果说以后git push的的时候不想输入密码,在克隆的时候,就选择ssh链接。

image-20210726215050857

​ 建立IDEA的git版本控制就不操作了,一般用不到。

​ 还有建立分支,也没多少用,现在用不太到。

复制粘贴快捷键

​ ctrl + ins 复制

​ shift + ins 粘贴

<think>好的,我现在需要帮用户解决Git中的'fatal: unable to read tree'错误。首先,我得回忆一下这个错误通常出现在什么情况下。根据用户提供的引用内容,之前的错误如无法检出工作树或SSL连接问题,可能和文件系统权限、仓库损坏或网络问题有关。不过'fatal: unable to read tree'具体是什么原因呢? 我记得Git中的tree对象代表目录结构,如果无法读取tree,可能意味着仓库数据损坏或者索引有问题。比如在克隆时,可能因为仓库损坏或者本地文件系统权限问题导致无法正确写入文件。用户提到的引用[3]中提到了NTFS保护机制,可能和文件系统有关,比如文件名不符合Windows的规则,导致检出失败,进而影响tree的读取。 另外,可能用户在操作过程中遇到了仓库损坏的情况,比如突然断电或进程被终止,导致Git对象不完整。这时候可能需要修复仓库或者重新克隆。另外,也有可能是磁盘错误,导致Git无法读取存储的对象文件。 接下来,我应该列出可能的解决方案。首先检查仓库完整性,使用git fsck来扫描问题。如果发现损坏的对象,可能需要手动修复或重新克隆。然后,检查文件系统权限,确保Git有权限写入文件。对于Windows用户,可能需要关闭core.protectNTFS,如引用[3]提到的,避免文件名冲突导致的错误。 另外,清理本地缓存和索引,比如删除index文件并重置,可能有帮助。如果问题出现在克隆时,尝试重新克隆仓库,确保网络稳定,避免传输中断。引用[5]提到了SSL问题,可能与网络配置有关,比如代理或防火墙设置,但这里主要是tree读取错误,可能更多是本地问题而非网络。 最后,如果所有方法都无效,可能需要重新初始化仓库,或者检查磁盘健康状态。确保用户备份了重要数据,避免数据丢失。总结起来,步骤应该是:检查仓库完整性、修复或重新克隆、处理文件系统权限、清理缓存,最后考虑硬件问题。</think>### Git错误'fatal: unable to read tree'的解决方案 此错误通常与Git仓库的完整性或文件系统权限相关,可能由以下原因导致: 1. **仓库数据损坏**:克隆或拉取过程中断,或本地仓库文件被意外修改[^3]。 2. **文件系统权限冲突**:例如Windows NTFS保护机制阻止Git创建特定文件。 3. **索引文件损坏**:`.git/index`文件异常导致无法正确读取仓库结构。 #### 逐步解决方法 1. **检查仓库完整性** ```bash git fsck --full ``` 此命令会扫描Git对象库,若输出`dangling commit`或`missing blob`等提示,说明存在损坏对象。若损坏严重,建议重新克隆仓库。 2. **修复文件系统权限** - **Windows用户**:临时关闭NTFS保护机制: ```bash git config --global core.protectNTFS false ``` 完成后重新尝试操作(如`git checkout`)[^3]。 - **所有系统**:确保仓库目录及子目录的读写权限正常,避免因权限不足导致文件写入失败。 3. **清理并重置本地缓存** ```bash rm -f .git/index git reset --hard HEAD ``` 此操作会清除损坏的索引文件并重置工作区。 4. **重新克隆仓库** ```bash git clone --no-checkout <仓库URL> cd <仓库目录> git checkout ``` 使用`--no-checkout`参数跳过初始检出步骤,减少因文件冲突导致的失败[^1]。 5. **检查磁盘与网络** - 运行磁盘错误检查工具(如Windows的`chkdsk`)。 - 若使
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值