git是一种版本控制系统,通俗来说,就是帮咱们把文件备份。但git版本控制系统的功能远不止备份这么简单,总的来讲它具备以下特色:html
GIT并非惟一的版本控制系统,除了GIT以外,经常使用的版本控制管理系统还有SVN,鉴于他们实现机制的不同,一般咱们称GIT为分布式版本管理系统,SVN是集中式版本管理系统。
那么分布式和集中式版本控制系统有什么不同呢?git
git的工做是分区的,经过调用git相关的命令,咱们在每一个区能够切换,git常有三种区,分别是:github
工做区就是咱们本地电脑工做中使用的那部分代码,当咱们使用命令git add命令把代码添加以后,咱们的代码就提交到暂存区了,使用了git commit 命令,咱们的代码就提交到历史区了。web
一、打印当前文件目录缓存
pwd
二、查看git配置服务器
git config --list
三、配置全局的用户信息分布式
git config --globle user.name "mmcai" git config --globle user.email "xx@126.com"
四、配置当前目录下git的用户信息学习
git config user.name "mmcai" git config user.email "xxx@126.com"
五、初始化git——告诉那个文件夹被git所管理网站
git init
六、递归强制删除文件夹url
rm -rf xxx -r 递归 -f 强制
七、其余
cd 切换文件目录 mkdir 在指定目录下建立文件夹 touch 在指定文件目录下建立文件 cat 查看文件内容 ls -al 显示当前目录下全部的文件内容
八、vi 编辑相关命令
vi <文件名> i/u 切换到编辑模式 dd 删除当前行 ESC 退出编辑模式 :wq 保存文件并退出 :q! 强制退出
九、直接把工做区的内容提交到历史区
git commit -a -m '注释' 前提条件是,你必须使用git add 命令操做过一次
上面咱们说到GIT系统当中有三个区:工做区,暂存区,历史区,咱们不能跨区操做,必须先把文件添加到暂存区以后,才能提交到历史区。若是把代码从工做区提交到暂存区,或者把暂存区的内容提交到历史区,代码只是copy了一份存到另外的空间,当前(工做区)当中的内容,不会发生变化。
工做区
当咱们使用git init 命令行支行,咱们当前就处在工做区
git init
暂存区
在工做区下,咱们执行以下命令,就把咱们当前的文件,提交到了暂存区
git add ./-A
既然能添加,固然也能删除暂存区,使用以下命令,咱们能够删除暂存区里面的内容
git rm --cached 文件名
历史区
使用命令git commit 就把文件从暂存区
git commit -m '描述你这次提交到历史区作的修改' -m 参数不能省略,必须填写
日志
查看git提交到历史区的历史状态,最新提交的内容在日志的最上面展现
git log
状态
查看当前git所在那个区?工做区,暂存区,历史区
git status
一般为了查看每一个区的内容有何不一样,咱们能够经过git diff命令来实现,咱们上面知道,git有三个区,因此比较的状况也会分为几种状况:
git diff 工做区和暂存区比较 git diff <master> 工做区和历史区比较 gif diff --cached 工做区和暂存区比较
撤销
当咱们工做区的代码,不当心或者写的比较不理想的状况下,咱们想把本次修改的内容进行撤销的时候,GIT能够帮我实现。撤销分几种状况:
一、从暂存区回滚
二、若是暂存区也是须要回滚的,须要从上一层暂存区进行回滚
三、若是不当心提交到历史区,须要从上一层历史区中进行回滚
从暂存区回滚:
git checkout .
从暂存区的上一层进行回滚
git reset HEAD . git checkout .
从历史区的上一层进行回滚
git reset --hard <版本号,版本号经过git log查看> 该操做会把工做区和暂存区所有覆盖
若是从历史区的上一层回滚以后,想再次回到以前的历史区怎么办?
git reflog 查看所有日志,获取版本ID git reset --hard <版本ID> 只要你知道版本ID,你就可使用git reset 回滚到任何版本
.表示当前目录下的全部文件
分支的使用一般会有如下几种状况:
查看分支
git branch
建立分支
git branch <分支名>
切换分支
git checkout <分支名>
建立并切换分支
git checkout -b <分支名>
删除分支
git branch -D <分支名> 删除分支时,用户不能在当前分支上
当您在一个分支下建立了新的文件时,若是没有把文件提交到历史区,全部的分支下都能看到该文件。同时当你在一个分支下对文件进行了修改以后,在你没有把它提交到暂存区或者历史区以前,你切换分支会提示不容许,这个时候能够经过以下命令实现切换
git stash 暂存文件 git stash pop 还原暂存文件
工做流程是:分支1(没有提交到暂存区或历史区)——> git stash 暂存文件——>分支2——>git stash pop——>分支1
分支合并
合并分支的时候,确保当前分支时主干,不然,就把主干合并到了其它分支上去了
git merge <分支名>
查看分支状况
git log --graph --online
虽然git是分布式的,但咱们每每仍是须要一个中央服务器,这个服务器的主要任务能够理解成是咱们的代码仓库。这个仓库咱们叫作远程仓库,一般咱们用github或者国内的gitee。上面咱们说git当中有三个区:工做区,暂存区,历史区。远程仓库只会保存咱们历史区当中的内容,因此,你的代码git commit 命令以后,才能推送到远程仓库当中。
远程仓库配置
要想把代码提交到远程仓库,通常咱们须要有远程仓库相关的帐号,并且要设置相关的秘钥。
添加远程仓库
git remote add <origin(别名)> <url>
删除远程仓库
git remote rm <别名>
直接设置远程仓库
git remote set-url <别名> <url>
查看远程仓库地址
git remote -v
拉去线上代码
git pull
克隆远程仓库到本地
git clone <url>
推送到远程仓库
git push -u origin master -u 设置默认推送的主机,下次推送的时候,不用写仓库的名字,能够直接提交
gh-pages
在GitHub当中,咱们建立一个gh-pages的分支,能够发布咱们的静态页面,做为咱们项目的一个介绍网站。
咱们能够在github仓库的设置里面,找到GitHub Pages 主体,查看咱们项目可被访问的web静态页面的url地址。
注意
代码fork-pull
github上面,看到一个比较不错的项目,想要copy到本身的仓库,能够经过fork的操做,把别人仓库里面的项目,克隆到本身远程仓库当中。当你以为别人的代码写的很差的时候,能够经过pull requests 把你的代码提交到fork的项目当中。
以上内容,算是个人学习笔记,初次以外,涉及到git的问题,可能还有不少,好比说想把一个项目同时提交到两个仓库(GitHub和gitee),解决冲突等,但愿有机会咱们能一块儿讨论讨论。