### Git学习笔记——入门篇
#### 一、Git简介与安装
**Git**是一种分布式版本控制系统,用于跟踪计算机文件的变化,并协调多个用户之间的共享工作。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理Linux内核的源代码。
- **特点**:
- 完全分布式:每个开发者的仓库都是完整的,包含所有历史记录。
- 版本管理强大:支持快速分支和合并,便于团队协作。
- 速度快:通过高效的内部数据结构实现高速操作。
- **安装**:
- 访问官网下载安装包:[https://git-scm.com/downloads](https://git-scm.com/downloads)
#### 二、Git基本配置
配置用户的名称和邮箱是为了方便在提交时记录作者信息。
- **配置用户名**:
```bash
git config --global user.name "lockeyjj"
```
- **配置用户邮箱**:
```bash
git config --global user.email "[email protected]"
```
- **SSH公钥配置**:
1. 进入用户主目录下的`.ssh`目录:
```bash
cd ~/.ssh
```
2. 生成SSH密钥对:
```bash
ssh-keygen
```
3. 查看公钥内容:
```bash
cat ~/.ssh/id_rsa.pub
```
#### 三、Git的基本操作
- **三种状态**:
- 已提交(committed):文件已经存储在本地数据库中。
- 已修改(modified):修改后的文件尚未提交至本地数据库。
- 已暂存(staged):修改过的文件已准备好下一次提交。
- **初始化仓库**:
```bash
git init
git remote add origin https://github.com/lockeyjj/hello_world.git
git add *
git commit -m "first commit"
git branch --set-upstream-to=origin/master
```
- **克隆远程仓库**:
```bash
git clone https://github.com/lockeyjj/hello_world.git hello
# hello 为克隆出来的文件夹名
# 可指定默认分支名:
git clone -b booyah [url]
```
- **查看状态**:
- `git status [-s]`
- `-s`:简化格式输出
- `??`:未跟踪的新文件
- `M`:修改但未暂存的文件
- `MM`:已暂存的文件又被修改
- `A`:新增并暂存的文件
- `D`:删除的文件
- **暂存修改**:
- `git add [filename]`:跟踪新文件或将已跟踪的文件添加到暂存区
- `git add .`:暂存所有修改
- **忽略文件**:
- 在`.gitignore`文件中添加规则,以排除不需要的文件或目录。
- **查看修改**:
- `git diff`:查看已修改但未暂存的文件
- `git diff --cached` 或 `git diff --staged`:查看已暂存的文件
- **提交更新**:
- `git commit -m "message"`:提交暂存的更改
- `git commit -a -m "message"`:提交所有已跟踪的文件
- `git commit --amend`:修改最后一次提交的消息或内容
- **移除文件**:
- `git rm [--cached] [-r] [filename]`:从暂存区或工作目录中移除文件
- **移动文件**:
- `git mv README.md README`:相当于先移动文件再添加到暂存区,再从暂存区移除原文件。
- **历史记录**:
- `git log`:查看提交历史记录
- **取消暂存**:
- `git reset HEAD [filename]`:取消暂存,恢复到上次提交的状态
- `git checkout -- [filename]`:丢弃工作目录中的更改
#### 四、分支管理
- **创建并切换分支**:
```bash
git checkout -b iss53
```
- **跟踪远程分支**:
```bash
git checkout -b sf origin/serverfix
```
- **删除分支**:
- 本地分支:
```bash
git branch -d iss53
```
- 远程分支:
```bash
git push origin --delete serverfix
```
- **合并分支**:
- `git merge <branch>`:将一个分支合并到当前分支
- `git rebase <branch>`:将其他分支的变更应用到当前分支
#### 五、高级操作
- **解决冲突**:当合并或重新基底时出现冲突,需要手动解决冲突后再提交。
- **撤销操作**:如需撤销提交或回到某个特定的历史版本,可以使用`git revert`或`git reset`命令。
通过以上内容的学习,您已经掌握了Git的基础操作。接下来可以进一步探索更高级的功能,如标签管理、合并策略等,以更好地利用Git的强大功能来管理和维护您的项目。