介绍
git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。git是个工具,在linux里面也就类似gcc这样的工具一样,是一个shell命令。
Git与GitHub区别
Git与CVS、SVN的区别
远程仓库、工作区、版本库和暂存区

远程仓库
就是在github或者在gitlab上的代码。可以用git pull和git push来进行本地仓库和远程仓库的同步操作
工作区(Working Directory)
从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录,也就是工作区
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
暂存区(Stage)
暂存区就是版本库中的一个区域,具体参见上面的结构图
工作区、版本库、暂存区之间的关系
版本回退
前提条件:已经执行git commit命令了,但是没有push到远程仓库,用以下命令可以回退
其实这个回退就是将本地的HEAD指针移动到某个版本上而已,所以这个操作是非常快的。
回退到上一个版本
1 | $ git reset --hard HEAD^ |
回退到未来的某个版本
1 | $ git reset --hard 3628164 |
git log则不能查看已经删除了的commit记录
总结
git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉
撤销修改
含义
场景
git stash
场景:当你接到一个修复一个代号101的bug的任务时,你想创建一个分支issue-101来修复它,但是,当前正在dev上进行的工作还没有提交,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list
查看暂存区的所有暂存修改记录
1 | $ git stash list |
git stash apply stash@{X}
取出相应的暂存
git stash drop stash@{X}
将记录列表中取出的对应暂存记录删除
git stash pop(推荐)
取出最近一次暂存并删除记录列表中对应记录
分支管理
| 命令 | 含义 |
|---|---|
| git branch | 查看分支 |
| git branch |
创建分支 |
| git checkout |
切换分支 |
| git checkout -b |
创建+切换分支 |
| git merge |
合并某分支到当前分支 |
| git branch -d |
删除分支 |
Bug分支
在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
Feature分支
添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
