Git是目前世界上最先进的分布式版本控制系统(没有之一)。
集中式与分布式的区别
: CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统
:分布式版本控制系统根本没有“中央服务器”
:分布式版本控制系统的安全性要高很多
集中式版本库是集中存放在中央服务器的
最大的毛病就是必须联网才能工作
创建版本库
mkdir 命令 创建版本库
pwd命令 用于显示当前目录
初始化版本库
通过git init命令把这个目录变成Git可以管理的仓库
如果没有看到.git目录,可以用ls -ah
命令就可以看见。
添加文件到git仓库:
- git add -A
- git commit -m”备注”
- git status 查看结果信息
- git diff 可以查看修改内容
- git log 可以查看提交的版本信息 输出信息太多可以加上–pretty=oneline参数
- git reset head~往上第几个版本 回退 head 代表的是仓库中的最新版本
- git reset –hard 版本号 回退
- git reflog 用来记录你的每一次命令
- git diff HEAD – readme.txt命令可以查看工作区和版本库里面最新版本的区别
- git checkout – 文件名 丢弃工作区的修改
- git checkout 分支名 切换仓库分支
- git rm 文件名 移除此《文件名》
你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
在Git中,总是有后悔药可以吃的。当你用$ git reset –hard HEAD^回退到xxx版本时,再想恢复到AAA,就必须找到AAA的commit id。Git提供了一个命令git reflog用来记录你的每一次命令
-
关联远程仓库:
- 关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
-
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
- 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
-
创建/切换分支:
-
git checkout -b 分支名 创建+切换分支
$ git branch 分支名 创建分支 $ git checkout 分支名 切换分支
git branch 查看当前分支/*
git merge 分支名 命令用于合并指定分支到当前分支
git branch -d 分支名 删除分支《分支名 》
git log –graph 命令可以看到分支合并图。
git branch -D 分支名 强行删除
多人协作:查看远程库信息,使用git remote -v 本地新建的分支如果不推送到远程,对其他人就是不可见的; 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name; 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
创建标签:
创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released" 版本号
git tag可以查看所有标签
操作标签:命令git push origin <tagname>可以推送一个本地标签; 命令git push origin --tags可以推送全部未推送过的本地标签; 命令git tag -d <tagname>可以删除一个本地标签; 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
命令简写:
co表示checkout,
ci表示commit,
br表示branch
命令git reset HEAD file可以把暂存区的修改撤销掉(unstage)