一. GIT和SVN的区别
1. GIT是分布式的,SVN不是 2. GIT分支和SVN的分支不同
3. GIT把内容按元数据方式存储,而SVN是按文件
二. 理解git、gitlab和github的区别
Git:是一种版本控制系统,是一个命令,是一种工具
Github:是一个基于git实现的在线代码仓库,包含一个网站界面,向互联网开放
Gitlab:是一个基于git实现的在线代码仓库软件,你可以用gitlab自己搭建一个类似于github一样的系统,一般用于在企业、学校等内部网络搭建git私服
三. 理解git的基本工作流程
Workspace:工作区 Index / Stage:暂存区
Repository:仓库区(或本地仓库) Remote:远程仓库
四. 新建代码库:
# 在当前目录新建一个Git代码库 $ git init
# 下载一个项目和它的整个代码历史 $ git clone http://ip/root/study.git # 下载master分支和它的代码历史
$ git clone –b master http://ip/root/study.git
五. 增加文件:
# 添加指定文件到暂存区 $ git add index.jsp index2.jsp…
# 添加指定目录到暂存区,包括子目录 $ git add WEB-INF
# 添加当前目录的所有文件到暂存区 $ git add .
六. 删除文件:
# 删除工作区文件,并且将这次删除放入暂存区 $ git rm index.jsp...
# 停止追踪指定文件,但该文件会保留在工作区,忽略此文件不提交 $ git rm –cached index.jsp
# 改名文件把index.jsp修改成index2.jsp,并且将这个改名放入暂存区 $ git mv index.jsp index2.jsp
七. 还原代码:
# 恢复暂存区的指定文件到工作区,工作区的文件会还原 $ git checkout index.jsp $ git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 $ git reset index.jsp $ git reset .
八. 新建分支,切换分支: # 列出所有本地分支和远程分支 $ git branch -a
# 新建一个分支,但依然停留在当前分支 $ git branch test
# 新建一个分支,并切换到该分支 $ git checkout -b dev
# 切换到一个分支 $ git checkout test
九. 提交分支,删除分支,分支合并 #提交本地分支到远程仓库 $ git push origin dev
# 删除远程分支
$ git push origin --delete test # 合并指定分支到当前分支 $ git merge test
十. 打基线tag: # 列出所有tag $ git tag
# 新建一个tag在当前commit $ git tag “v1.0a” # 提交指定tag
$ git push origin dev ”v1.0a”
# 删除远程tag
$ git push origin :refs/tags/v1.0a