git是一个分布式版本控制系统,相对于传统的集中式版本控制系统而言,其具有如下特点:
- 没有中央服务器,每一台电脑都相当于一个版本库;
- 不需要联网也可以工作。
虽然git可以将每一台电脑都当作一个版本库,两个人修改了相同的文件相互推送就可以看到对方的修改了。但是人们不可能都工作在一个局域网下,且每个人不可能每天都在,故git也会创建一个类似于中央服务器的存在,用来进行修改文件的交换。可以认为GitHub就是一个类似于中央服务器的远程仓库。
要使用git,首先要在电脑上安装git(方法略)
##git主要命令总结
命令 | 作用 | 使用场景 | 使用方法 |
---|---|---|---|
git init | 将当前目录变成git可以管理的仓库 | git init | |
git add | 将修改的文件添加到暂缓区 | 在本地修改一个或多个文件要提交的情况下 | git add <文件名> /git add . (.表示将工作区的所有文件加到暂缓区) |
git commit | 将暂缓区的文件提交到仓库 | 在暂缓区有文件的时候一次性提交,相当于确定了一个版本 | git commit -m “备注信息” |
git status | 查看仓库当前状态 | git status | |
git diff | 查看同一个文件在工作区和仓库的差异 | 在工作区有修改的时候使用 | git diff <文件名> |
git log | 显示从最近到最远的commit提交日志, | git log - -pretty=oneline (参数使信息简单化,只保留了版本号和备注信息) | |
git reset | 回到指定的版本或状态 | 1.撤销工作区的修改 2.版本回退 3.跳转到指定版本 | 1.git reset HEAD <文件名>(在修改的文件放到暂缓区之后) 2.git reset - -hard HEAD^(回退到上一个版本) 3.git reset - -hard 版本号 (跳转到指定版本) |
git reflog | 查看历史版本操作信息 | git reflog | |
git rm | 删除一个文件 | git rm <文件名> (删除对git来说也算一种修改,需要commit) | |
git branch | 操作分支 | 1.git branch <分支名> (创建分支)2.git branch (查看所有分支,当前分支前有*) | |
git checkout | 切换 | 1.git checkout - - <文件名> (用版本库中的版本代替工作区的版本,对于删除和修改的文件都有效) 2.git checkout 分支名 (切换分支) | |
创建并切换分支 | git checkout -b 分支名 | ||
git merge | 合并分支 | git merge 分支名 (将该分支合并到当前分支) | |
删除分支 | git branch -d <分支名> | ||
查看远程地址 | git remote -v |
##本地仓库与远程仓库的协作
- 在本地计算机中注册用户:
- git config - -global user.name "your_name"
- git config - -global user.email "email@example.com"
- 在GitHub官网上注册账号
- 在本地安装SSH证书:
- 在本地用户主目录下,查看是否有.ssh目录及其目录下是否有id_rsa(私钥)和id_rsa.pub(公钥)文件。没有的话执行如下命令:ssh-keygen -t rsa -C “email@example.com”(注意-C是大写)
- 在GitHub中找到 账户设置,将公钥的内容复制到ssh key处,并添加;
- 关联本地仓库和远程仓库:git remote add origin git@github.com:michaelliao/learngit.git (origin 远程库名;michaeliao GitHub账户名;learngit 仓库名)
- 远程推送: git push -u origin master
- 远程克隆:it clone git@github.com:michaelliao/gitskills.git(应用时换掉相应的参数)