SVN 与 CVS:
每次提交的文件都单独保存,即按照文件的提交时间区分不同的版本,保存至不同的逻辑存储区域,后期恢复的时候直接基于之前版本恢复。
Gitlab:
Gitlab 与 SVN 的数据保存方式不一样,gitlab 虽然也会在内部对数据进行逻辑划分保存,但是当后期提交的数据如果和之前提交过的数据没有变化,其就直接快照之前的文件,而不是在将文件重新上传一份在保存一遍,这样既节省了空间又加快了代码提交速度。
git常用命令
Git global setup git config --global user.name "Administrator" git config --global user.email "admin@example.com" Create a new repository git clone http://gitlab.magedu.com/mao/lmweb1.git cd lmweb1 touch README.md git add README.md //将当前目录下代码提交到本地暂存区" git commit -m "add README" //"为描述信息,将当前目录下代码提交到本地仓库" git push -u origin master //上传到远程仓库 Push an existing folder cd existing_folder git init git remote add origin http://gitlab.magedu.com/mao/lmweb1.git git add . git commit -m "Initial commit" git push -u origin master Push an existing Git repository cd existing_repo git remote rename origin old-origin git remote add origin http://gitlab.magedu.com/mao/lmweb1.git git push -u origin --all git push -u origin --tags
git config --global user.name “name“ #设置全局用户名 git config --global user.email xxx@xx.com #设置全局邮箱 git config --global --list #列出用户全局设置 git add index.html / . #添加指定文件、目录或当前目录下所有数据到暂存区 git commit -m “11“ #提交文件到本地仓库,""为描述信息 git status #查看工作区的状态 git push #提交代码到服务器 git pull #获取代码到本地 git log #查看操作日志 vim .gitignore #定义忽略文件 git reset --hard HEAD^^ #git 版本回滚, HEAD 为当前版本,加一个^为上一个,^^为上上一个版本 git reflog # #获取每次提交的 ID,可以使用--hard 根据提交的 ID 进行版本回退 git reset --hard 5ae4b06 #回退到指定 id 的版本 # git branch #查看当前所处的分支 #git checkout -b develop #创建并切换到一个新分支 #git checkout develop #切换分支
git 缓存区与工作区 等 概念
工作区:clone 的代码或者开发自己编写的代码文件所在的目录,通常是代码所在的一个服务的目录名称。
暂存区:用于存储在工作区中对代码进行修改后的文件所保存的地方,使用 git add 添加。
本地仓库:用于提交存储在工作区和暂存区中改过的文件地方,使用 git commi 提交。
远程仓库:多个开发共同协作提交代码的仓库,即 gitlab 服务器。
示例:
]# cd lmweb1/ [root@jenkins lmweb1]# ll -rw-r--r--. 1 root root 74 Dec 16 06:32 index.html [root@jenkins lmweb1]# git status # On branch master nothing to commit, working directory clean [root@jenkins lmweb1]# mkdir app1 [root@jenkins lmweb1]# cd app1/ [root@jenkins app1]# vim index.html [root@jenkins app1]# cd .. [root@jenkins lmweb1]# git add . [root@jenkins lmweb1]# git status //可以看到缓存区有待上传文件 # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: app1/index.html [root@jenkins lmweb1]# git commit -m "this is app1" [master c6cdc3e] this is app1 1 file changed, 1 insertion(+) create mode 100644 app1/index.html
[root@jenkins lmweb1]# git status //再次查看工作区状态 # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # (use "git push" to publish your local commits) # nothing to commit, working directory clean
[root@jenkins lmweb1]# git push //上传到远程仓库
Username for 'http://gitlab.magedu.com': laomao Password for 'http://laomao@gitlab.magedu.com': Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 364 bytes | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) To http://gitlab.magedu.com/mao/lmweb1.git 46dcbb6..c6cdc3e master -> master