设置姓名和邮箱
git config --global user.name “Firstname Lastname”
git config --global user.email “your_emal@example.com”
要使用Git进行版本管理,必须先初始化仓库。Git使用git init命令初始化的
mkdir git-tutorial
cd git-tutorial
git init
初始化成功,执行了git init命令的目录下就会生成.git目录,这个.git目录里储存这管理当前目录内容所需的仓库数据
在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”,文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开
git status用于显示Git仓库的状态
可以显示目前在哪个分支下,有没有可以提交的内容
git add向暂存区中添加文件
如果只是用Git仓库的工作树创建了文件,那么该文件并不会被记入Git仓库的版本管理对象中。
git commit保存仓库的历史记录
可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件
git commit -m “First commit”
-m参数后称作提交信息,是对这个信息的概述
git log查看提交日志
可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别
git log --pretty=short显示日志简述信息
只要在git log命令后加上目录或文件名就只显示该目录或文件的日志
显示文件的改动,可以加上-p参数,git log -p
git diff 查看更改前后的差别
可以查看工作树、暂存区和最新提交之间的差别
使用git diff可以查看工作树和暂存区的差别,如果工作树和暂存区的状态并无差别,结果什么都不会显示
git diff HEAD可以查看工作树和最新提交的差别。不妨养成一个好习惯,在执行git commit之前先执行git diff HEAD,查看本次提交与上次提交之间有什么差别。这里的HEAD是指向当前分支中最新一次提交的指针
master分支是Git默认创建的分支,因此基本上所有开发都是以这个分支为中心的。不同的分支中,可以同时进行完全不同的作业,等该分支的作业完成后在与master分支合并
git branch可以将分支名列表显示,同时可以确定当前所在分支
git checkout -b 创建切换分支
git check -b feature-A
等价于
git branch feature-A
git checkout feature-A //git checkout 分支名 可用于切换分支
创建feature-A分支,并在当前分支切换为feature-A分支
git checkout - 切换回上一个分支
git merge合并分支
git checkout master切换到master分支
git merge --no–ff feature-A
合并feature-A分支,为了在历史中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上–no–ff参数
git log --graph以图表形式查看分支
使用git log --graph命令查看,可以清楚地看到特性分支提交的内容已被合并,除此以外特性分支的创建以及合并也都清楚明了
git reset 回溯历史版本
要让仓库的HEAD、暂存区、当前工作树回溯到在指定状态,需要用到git reset --hard命令。只需要提供目标时间点的哈希值,就可以完全恢复到该时间点的状态
git log命令只能查看以当前状态为终点的日志文件。所以这里要使用git reflog命令,查看当前仓库的操作日志。在日志中找出回溯历史之前的哈希值,通过git reset --hard命令恢复到回溯历史前的状态
在日志中,可以看到commit、checkout、reset、merge等git命令的执行记录。只要不进行Git的GC(垃圾回收),就可以通过日志随意调取近期的历史状态。即使开发者错误执行了Git操作,基本也都可以利用git reflog命令恢复到原先的状态