### Git学习笔记
#### 1. Git安装与配置
在Linux环境下安装Git,可以通过包管理器来完成。例如,在Ubuntu系统中,可以使用`sudo apt-get install git`来进行安装。
安装完成后,为了确保你的所有Git操作都关联正确的用户名和邮箱地址,你需要进行一次全局配置。在命令行中输入以下命令:
```bash
$ git config --global user.name "YourName"
$ git config --global user.email "email@example.com"
```
这里,“YourName”应替换为你的名字,“email@example.com”应替换为你常用的电子邮件地址。
#### 2. 初始化Git仓库
如果你希望把一个普通文件夹变成Git可以管理的仓库,需要在该文件夹下执行`git init`命令。这会在当前目录下创建一个名为`.git`的隐藏目录,用于存放版本控制的相关数据。
示例命令如下:
```bash
$ git init
```
执行完此命令后,你会看到类似下面的输出:
```
Initialized empty Git repository in /Users/michael/learngit/.git/
```
这表示Git仓库已经初始化完毕。
#### 3. 添加和提交文件
一旦Git仓库准备好,就可以开始向其中添加文件了。使用`git add`命令将文件添加到暂存区:
```bash
$ git add readme.txt
```
接下来,使用`git commit`命令将暂存区中的改动提交到仓库:
```bash
$ git commit -m "wrote a readme file"
```
其中,“wrote a readme file”是此次提交的注释信息,用于描述这次提交的目的。提交成功后,你会看到如下信息:
```
[master (root-commit) cb926e7] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
```
这表示文件已成功提交至Git仓库。
#### 4. 检查状态和差异
- 使用`git status`命令检查当前仓库的状态,了解哪些文件被修改但未添加到暂存区,哪些文件已添加但未提交等信息。
- 使用`git diff`命令查看文件之间的差异。例如,`git diff HEAD --readme.txt`可以查看工作区中的readme.txt文件与最后一次提交的差异。
#### 5. 修改与再次提交
当文件经过修改后,如果想要再次提交,需要先运行`git add`,再运行`git commit -m "comments"`。
#### 6. 查看提交历史
- `git log`命令可以查看从最近到最远的所有提交记录。使用`git log --pretty=oneline`可以让输出结果更简洁。
- `git show HEAD`则可以查看最新的提交详情。
#### 7. 版本回退
- 使用`git reset --hard HEAD^`可以回退到上一个版本。
- 如果要回退到特定版本,可以用`git reset --hard 420b871652dab`(版本号不一定要写全,写前几位即可)。
#### 8. Git reflog
`git reflog`命令可以查看所有的分支变动历史,包括HEAD指针的移动记录。这对于恢复丢失的提交非常有用。
#### 9. 工作区与版本库
- **工作区**:即你在计算机中可见的目录,如`learngit`文件夹。
- **版本库**:工作区中包含一个隐藏的`.git`目录,这是Git的版本库,它包含了暂存区(stage/index)、主分支`master`以及指向`master`的指针`HEAD`等。
#### 10. Git跟踪修改而非文件
Git关心的是文件的修改,而不是文件本身。这意味着即使一个文件被多次修改,只有被`git add`过的修改才会被提交。例如:
1. 第一次修改文件 -> `git add` -> 第二次修改文件 -> `git add` -> `git commit`
这样,两次修改都会被提交。如果没有执行`git add`,那么修改将不会被提交。
#### 11. 丢弃文件修改
当你不小心修改了文件,但又不想保留这些修改时,可以使用`git checkout -- <file>`命令来恢复文件到最近一次提交的状态。
- 如果文件尚未被添加到暂存区,执行上述命令将会撤销所有修改,恢复到与版本库一致的状态。
- 如果文件已被添加到暂存区后又有新的修改,执行上述命令会撤销新的修改,但暂存区中的修改仍然保留。
以上就是关于Git的基本操作和概念介绍。熟练掌握这些命令可以帮助你更高效地管理和协作代码项目。