一、Git基本操作
git init --- 初始化仓库
git status --- 查看仓库的状态
git add --- 向暂存区中添加文件
git commit --- 保存仓库的历史记录
git commit -m --- "注释信息" 记述一行提交信息
记述详细提交信息:接执行 git commit命令,在编辑器中记述提交信息的格式如下:
第一行:用一行文字简述提交的更改内容
第二行:空行1
第三行以后:记述更改的原因和详细内容
git log --- 查看提交日志
git log --pretty=short --- 只显示提交信息的第一行
git log 后面加上目录名,便会只显示该目录下的日志;如果加的是文件名,就会显示与该文件相关的日志。
git log -p readme.md ---显示文件的改动
git diff --- 查看更改前后的差别
git diff head --- 查看本次提交与上次提交之间有什么差别。
二、分支操作
在进行多个并发作业时,我们会用到分支。
不同分支中,可以同时进行完全不同的作业。等该分支作业完成之后,再与master分支合并。
通过灵活运用分支,可以让多人同时高效地进行开发。
1、git branch:显示分支一览表
git branch命令可以将分支名列表显示,同时可以确认当前所在的分支。
带有*号,表示这是我们当前所在的分支。目前本地只有一个分支master。
2、git checkout -b:创建、切换分支
如果想以当前的master分支为基础创建新的分支,我们需要用到该命令。
创建分支feature-A,并切换到该分支下。
可以看到feature-A分支左侧有“*”,表示当前分支为feature-A。在这个状态像正常开发那样修改代码,执行git add命令,并进行提交的话,代码就会提交到feature-A分支。像这样不断对一个分支(例如:feature-A)进行提交的操作,我们称为“培育分支”。
git checkout master 切换到master分支。
与SVN集中型版本管理系统不同,创建分支时不需要连接中央仓库,所以能够相对轻松地创建分支。
特性分支:是集中实现单一特性(主题),除此之外不进行任何作业的分支。
之前我们创建feature-A分支,这一分支主要实现feature-A,除feature-A的实现之外不进行任何作业。即便在开发过程中发现了bug,也需要再创建新的分支,在新分支中进行修正。
主干分支:特性分支的原点,同时也是合并的终点。通常用master作为主干分支。主干分支中并没有开发到一半的代码,可以随时供他人查看。
git merge:合并分支
接下来,feature-A分支已经实现完成,想要将他合并到主干分支master中,首先切换到master分支,然后合并feature-A分支。为了在历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上--no-ff参数。
这样一来,feature-A分支的 内容就合并到master分支中了。
git log -graph:以图表形式查看分支
三、更改提交的操作
git reset:回溯历史版本
Git的另一特性便是可以灵活操作历史版本。借助分散仓库的优势,可以在不影响其他仓库的前提下对历史版本进行操作。
1、回溯到创建feature-A分之前
回溯到创建feature-A分之前,创建一个名为fix-B的特性分支。
要让仓库的HEAD、暂存区、当前工作树回溯到指定状态,需要用git reset --hard命令。只要提供目标时间点的哈希值就可以。
2、创建fix-B分支
3、在readme.md中添加一行文字
4、直接提交readme.md文件
6、推进feature-A分支合并后的状态
git log命令只能查看以但钱状态为终点的历史日志。
git reflog命令,查看当前仓库的操作日志。
git reset --hard d10d10d 还是通过这条命令回溯历史。