### Git学习笔记
#### 一、版本控制系统概览
**版本控制系统**是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。根据存储方式的不同,版本控制系统可以分为两大类:
1. **集中式版本控制系统**:如SVN、CVS、VSS等,这类系统的特点是有一个中心服务器用来保存所有文件的修订版本,而协同工作的人们则通过客户端连到这台服务器,取出最新的文件或者提交更新。这种模式的主要缺点是如果中心服务器出现故障,则整个系统的版本历史就会丢失,存在单点故障的风险。
2. **分布式版本控制系统**:如Git、Bazaar、Darcs等,这类系统不仅在中心服务器上保存所有文件的修订版本,每位用户的计算机上也几乎保存了一份完整的文件修订记录。这意味着即使中心服务器宕机,也可以用任何一个镜像出来的本地仓库恢复。Git作为其中最著名的代表之一,因其高效性和安全性广受好评。
#### 二、Git的安装
Git的安装步骤根据不同的操作系统有所不同,下面分别介绍在Linux、Mac OS以及Windows上的安装方法。
1. **在Linux上安装Git**
- 首先检查系统是否已安装Git,可在终端输入 `$ git` 命令进行查询。
- 如果未安装,可以通过包管理器安装Git。对于基于Debian的发行版(如Ubuntu),可以使用命令 `$ sudo apt-get install git` 安装Git。
2. **在MacOS上安装Git**
- 一种方法是安装Homebrew,再通过Homebrew安装Git。具体步骤可参照官方文档:[http://brew.sh/](http://brew.sh/)
- 另一种方法是直接从App Store安装Xcode,其中包含了Git,但需要手动安装命令行工具。安装步骤如下:
- 打开Xcode,选择菜单栏中的“Xcode”->“Preferences”。
- 在弹出窗口中找到“Downloads”选项卡,选择“Command Line Tools”,点击“Install”按钮即可完成安装。
3. **在Windows上安装Git**
- 访问[https://git-scm.com/downloads](https://git-scm.com/downloads) 下载Git安装程序。
- 按照默认选项完成安装。
4. **安装完成后的基本设置**
- 设置用户名称和邮箱地址,这将用于标识每次提交的作者信息。
```
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
```
- 其中`--global`参数表示这些配置将应用到当前计算机上的所有Git仓库。
#### 三、创建版本库
**版本库(repository)**可以简单理解为一个目录,该目录内的所有文件都将被Git管理。每当文件发生变更或删除,Git都能够进行跟踪,便于随时追踪历史版本或进行还原操作。
1. **创建新的版本库**
- 首先在一个合适的路径下创建一个新的目录。
```
$ mkdir GitRepository
```
- 进入该目录并初始化Git仓库。
```
$ cd GitRepository
$ git init
```
#### 四、时光穿梭机
**时光穿梭机**指的是通过Git能够实现对文件的添加、提交、回退等一系列操作,帮助我们管理项目的历史版本。
1. **添加文件到Git仓库**
- 第一步:将文件添加到暂存区。
```
git add readme.txt
```
- 第二步:提交更改到版本库。
```
git commit -m "wrote a read me file"
```
- 使用`git status`命令可以查看当前Git仓库的状态,哪些文件需要添加或提交。
- 使用`git diff`命令可以查看具体的文件修改内容。
2. **版本回退**
- 场景:文件丢失,从最近的一次提交中恢复文件。
- 使用`git log`命令查看提交日志。
- 使用`git reset --hard HEAD^`命令回退到当前版本的上一个版本。
- 使用`git reflog`命令查看每一次命令的历史记录。
3. **工作区与版本库的关系**
- 工作区是指我们实际操作的目录。
- 版本库是在执行`git init`后生成的隐藏的`.git`目录。
- 暂存区位于`.git`目录下的`stage`或`index`目录中。
4. **管理修改**
- Git跟踪并管理的是文件的修改而非文件本身。只有添加到暂存区的修改才能被提交到版本库。
- 使用`git diff HEAD -- <filename>`命令查看工作区和版本库最新版本之间的区别。
5. **撤销修改**
- 场景:误将修改后的文件添加到暂存区,但还未提交至版本库,想要撤回此次添加。
- 使用`git reset HEAD <filename>`命令撤销暂存区的修改,并将修改重新放回工作区。
- 使用`git checkout -- <filename>`命令丢弃工作区的修改,让文件回到最近一次提交或添加的状态。
6. **删除文件**
- 场景:确认要从版本库中删除某个文件。
- 第一步:使用`git rm <filename>`命令删除文件。
- 第二步:提交删除操作。
```
git commit -m "delete <filename>"
```
- 场景:工作区中误删除某文件,从版本库中恢复。
- 使用`git checkout -- <filename>`命令恢复文件。
#### 五、远程仓库
1. **添加公钥到GitHub**
- 注册GitHub账号并登录。
- 在GitHub中添加SSH公钥。如果尚未生成公钥,可以使用以下命令:
```
ssh-keygen -t rsa -C "your_email@example.com"
```
- 将生成的公钥内容复制并粘贴到GitHub的SSH keys设置页面。
以上就是关于Git的基础学习笔记,涵盖了Git的安装、基本配置、版本库创建及管理等内容,希望对你有所帮助。