Git 学习 2

本地版本库 - repository**

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 在目录右键选择 git bash
$ git init // 初始化 git 仓库
$ git add "readme.txt" // 添加文件到 git 仓库
//$ git add "r1.txt" "r2.txt" // 添加多个文件到 git 仓库
$ git commit -m "wrote a readme file" // 提交到仓库
$ git status // 查看工作区状态
$ git diff // 查看修改内容
$ git add "readme.txt"
$ git status
$ git commit -m "add distributed"
$ git add "readme.txt"
$ git commit -m "append GPL"
$ git log // 查看提交日记
$ git log --pretty=oneline // 查看提交日记,简化信息
$ git reset --hard HEAD^ // 退回一个版本,^^两个版本,~100一百个版本
$ git reset --hard [commit_id] // 恢复某一提交版本
$ git reflog // 查看命令历史
$ git diff HEAD -- readme.txt // 查看工作区和版本库里面最新版本的区别

工作区和暂缓区

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

  • 工作区 - Working Directory
    电脑能看到的目录

  • 版本库 - Repository
    工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
    Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD。

    add 命令实际是将要提交的所有修改放到暂存区(Stage),然后使用 commit 一次性把暂存区的所有修改提交到分区。

管理修改

如果不 add 到暂存区,那就不会加入到 commit 中。
第一次修改 -> git add -> 第二次修改 -> git commit(因第二次修改没有放入暂存区,所以第二次的修改不会被提交)
第一次修改 -> git add -> 第二次修改 -> git add -> git commit

撤销修改

1
2
$ git checkout -- readme.txt // 撤销修改
$ git reset HEAD readme.txt // 提交到暂存区使用 reset 命令,然后 checkout

删除文件

若 commit 删除需要还原,请使用 git reset 命令

1
2
3
$ git rm test.txt
// 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
$ git checkout -- test.txt