git简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
git的安装与配置
在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。
Git 各平台安装包下载地址为:http://git-scm.com/downloads
git的工作原理
Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。
• workspace:工作区
• staging area:暂存区/缓存区
• local repository:版本库或本地仓库
• remote repository:远程仓库
git仓库创建以及关联
- 初始化仓库: git init
初始化仓库,把当前这个目录变为git可以管理的仓库,该目录下边会多一个.git的文件
- 克隆一个远程仓库到本地 git clone (即下载一个项目)
- 关联一个远程仓库 git remote add 远程仓库地址
- 解绑远程仓库 git remote rm 远程仓库地址(或者远程自己设置的远程仓库名 如上边截图的 mirror)
git分支管理
- 分支的创建:git branch (branchName)
- 查看分支:git branch (-a 查看远程和本地所有分支;-r 查看远程分支;不带参数参看本地所有分支)
- 切换分支 git checkout (branchName)
- 创建分支并切换到该分支:git checkout -b (branchName)
- 删除分支:git branch -d (branchName)
- 合并分支:git merge (branchName)
git提交与修改
- git add . (.代表所有文件,要添加某个或者某几个文件使用 路径名 + 文件的形式)
- git commit -m ‘提交信息’ (将修改的文件提交到本地仓库,-m 参数后边的提交信息可以不写,建议写上)
- git commit -a -m ‘提交信息’ (使用该命令可以省略git add的过程,但是该命令只针对修改和删除有效,如果有新增文件,新增的文件提交不上去)
git标签
- 查看标签(添加-l可以模糊搜索标签) git tag
- 创建标注标签 git tag -a 标签名 –m 标注信息
- 推荐标签到远程服务器 git push origin 标签名 (使用—tags参数推送所有标签)
- 删除本地标签 git tag –d 标签名
- 删除远程标签 git push origin --delete 标签名
git查看提交历史和版本回滚
- 查看历史提交(使用-p参数可以查看每次提交的差异 ) git log
- 以列表形式查看指定文件的的历史修改记录 git blame 文件名
- 回归到指定版本号(未提交的记录) git reset --hard 版本号
- 回归到指定版本(已提交的记录) git revert –HEAD
git revert 和 git reset的区别
- 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的内容。