一、git介绍
1、git是什么?
git是目前世界上最先进的分布式版本控制系统
2、git的优势
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作
3、git能做什么(常用)
● 克隆版本库(目前我们最常用的功能)
● 项目版本控制
● 项目分支管理
二、Git基础教程
● Workspace:工作区
● Index / Stage:暂存区
● Repository:仓库区(或本地仓库)
● Remote:远程仓库
工作区
程序员进行开发改动的地方,是你当前看到的,也是最新的。
平常我们开发就是拷贝远程仓库中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作。
暂存区
.git目录下的index文件, 暂存区会记录git add添加文件的相关信息(文件名、大小、timestamp…),不保存文件实体, 通过id指向每个文件实体。可以使用git status查看暂存区的状态。暂存区标记了你当前工作区中,哪些内容是被git管理的。
当你完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过git add先提交到暂存区,被git管理。
本地仓库
远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的。
- 任何对象都是在工作区中诞生和被修改;
- 任何修改都是从进入index区才开始被版本控制;
- 只有把修改提交到本地仓库,该修改才能在仓库中留下痕迹;
- 与协作者分享本地的修改,可以把它们push到远程仓库来共享。
三、常用Git命令
2、add
git commit --amend -m [message]
使用一次新的commit,替代上一次提交
5、merge
6、rebase
7、reset
8、revert
git revert用一个新提交来消除一个历史提交所做的任何修改。
- git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
- 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git
revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,减少冲突。但是git
reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入,产生很多冲突。关于这一点,不太理解的可以看这篇文章。 - git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
10、其他命令
git status
显示有变更的文件
git log
显示当前分支的版本历史
git diff
显示暂存区和工作区的差异
git diff HEAD
显示工作区与当前分支最新commit之间的差异
git cherry-pick [commit]
选择一个commit,合并进当前分支
以上就是关于Git的一些常用命令及详细阐述,相信能对Git有一个初步的认识。