1. Git 简介
2. Git 的基本使用
2.1 配置 Git
git config --global user.name "opendragonhuang" git config --global user.email "opendragonhuang@outlook.com"
2.2 创建版本库
版本库又名为仓库,英文名为 repository,可以简单的理解为一个目录,这个目录里的所以文件都可以被 Git 管理起来。每个文件的修改、删除,Git 都能够去追踪,以便时刻都可以查看历史或者在将来的某个时刻还可一将文件「还原」。当版本库创建成功后,版本库所创建的的目录下会多了一个.git目录,这个目录便是 Git 来跟踪管理版本的。
在合适的位置创建一个目录,创建目录成功后进入此目录,使用 git init 命令把此目录变成一个 Git 版本库。
mkdir git_test cd git_test git init
2.3 向版本库添加文件
在 Git 中,用户使用的目录称为工作空间。.git目录为版本库。版本库里面包含两部分,一部分是 Index/Stage,中文含义是暂存区,另一部分是是 master 分支。一般情况下,用户在工作空间里新建了一个文件或是修改了文件,要被 Git 管理,需要经过两个步骤:
1. 把创建的文件或修改的文件添加到暂存区。
2. 把暂存区里的所有文件提交到分支中去。
假设用户在工作区里新建了一个 README.MD 文件,添加到 Git 中的过程如下:
git add README.MD git commit -m "add README.MD"
2.4 其他常用的 git 命令
命令 | 功能 |
---|---|
git status | 获取当前版本库的状态(最常用的 git 命令) |
git diff | 当使用 git status时提示文件被修改了,可以使用 git diff查看修改了那些内容。 |
2.5 注意事项
所以的版本控制系统都只能跟踪文本文件的修改,无法跟踪二进制文件的修改。
3. 版本回退
查看提交的历史记录(加--pretty=online参数可以简化输出)
git log
回退到以前的版本
git reset --hard HEAD^ git reset --hard HEAD^^ git reset --hard HEAD~100 git reset --hard commit_id
在 Git 中,有一个 HEAD 指针,此指针指向当前的版本。当版本回退时,HEAD 指针就会指向回退到的版本。
4. 暂存区、工作区和版本库
5. 撤销修改
1. 使用 git checkout -- fileName 命令的两种含义
- fileName 自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态。
- fileName 已经被添加到暂存区,又作了修改,撤销修改就是回到 fileName 添加到暂存区还没被修改的状态。
2. git reset HEAD fileName - 把暂存区的修改撤销掉,放回工作区。
6. 删除文件
手动删除掉了工作空间的文件时,使用git status就会提示有文件被删除了,此时有两种情况:
1. 确实要删除此文件
git rm fileName git commit -m "delete fileName"
2. 误删文件,想还原被删的文件
git checkout fileName
7. 本地仓库与 Github 远程仓库相关联
7.1生成 ssh 秘钥
因为本地的 Git 仓库和 Github 仓库的传输是通过 ssh 加密的,所以本地的 git 仓库与 github 仓库进行通信首先是生成 ssh 秘钥。创建 ssh 密钥的命令如下:
ssh-keygen -t -rsa -C "youemail@example.com"
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
登陆GitHub,打开「Account settings」,「SSH Keys」页面,然后点「Add SSH Key」,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
7.2 关联远程库
-
已有本地库,与远程库关联
1. 在 Github 创建一个仓库
2. 把本地库和远程库关联git remote add origin 「github repository url」
3. 把本地库推送到远程库
git push -u origin master
加上了-u参数,Git 不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
-
没有本地库
1. 在 Github 创建一个仓库
2. 把 Github 的参考克隆下来git clone github repository url
8. 分支的基本操作
命令 | 功能 |
---|---|
git branch | 查看当前分支 |
git branch | 创建分支 |
git checkout | 切换分支 |
git checkout -b | 创建+切换分支 |
git merge | 合并某分支到当前分支 |
git branch -d | 删除分支 |