Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到很是大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/git
GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。github
Git自己彻底能够作到版本控制,但其全部内容以及版本记录只能保存在本机,若是想要将文件内容以及版本记录同时保存在远程,则须要结合GitHub来使用。使用场景:缓存
其余:服务器
集中式:远程服务器保存全部版本,用户客户端有某个版本
分布式:远程服务器保存全部版本,用户客户端有全部版本app
git的工做原理仍是比较简单的,当咱们建立了本地代码仓库后,会在本地代码仓库的根目录中生成一个.git的隐藏文件。分布式
.git为一个文件目录,又叫作版本库。在本地代码仓库文件夹中,除.git目录以外的全部与.git同级的目录及其子目录都叫作工做区。设计
工做区(Working Directory):仓库文件夹里出.git目录之外的内容版本控制
版本库(Repository):.git目录,用于存储记录版本信息指针
暂缓区(stage),分支(master):git自动建立的第一个分支blog
HEAD指针:用户指向当前分支
git add:把文件修改或者新添加的的文件添加到暂存区
git commit:把暂存区的全部内容提交到当前分支
下图就能够解释git add 和 git commit的原理:
git init 初始化 git add filename.txt 添加要往远程传的文件到一个临时列表 git commit -m "xxx" # 说明为啥上传 git push origin master # 上传 git clone https://github.com/triaquae/Weibo # 克隆远程的项目 git status 查看修改结果 git log 查看修改过几回 git reflog 查看修改事后全部历史操做 git log --pretty=oneline 查看修改过的全部版本 git reset --hard 加版本 回滚到哪一个版本 git reset --hard head^ 回滚到上个版本 git reset --hard head^^ 回滚到上上(回滚到上两个)个版本 git reset HEAD filename.txt 撤回提交到暂存区的操做 git checkout --filename.txt 撤销工做区操做(能够多个文件) git rm filename.txt 删除暂存区 git checkout -b "dev" 建立分支(引号里是分支名) git push origin xxx 提交到分支库(xxx表示分支名) git branch 查看分支 git checkout dev 切换到分支库 git merge dev 合并分支库到主库(dev表示分支库) git pull 拉远程库的文件 git stash 缓存工做区的内容 git stash list 查看暂存区的内容 git stash apply 把暂存区的内容恢复到工做区 git stash pop 把暂存区的内容恢复到工做区而且把暂存区的删除 版本回退: git reset --hard HEAD : 回退到当前的版本 git reset --hard HEAD^ : 回退到上一个版本 git reset --hard HEAD^^ : 回退到上上个版本 git reset --hard HEAD~100 : 回退到前100版本 git reset --hard 版本号(前5位) 咱们修改或者新添加的文件起初是处于工做区,经过git add命令能够把工做区的文件移动到版本库中的暂缓区(stage)。 处在暂缓区(stage)的代码能够经过git commit -m “提交的注释” 提交到版本库中的分支(master)。 处在分支(master)中的代码能够经过git push命令push到共享版本库。 注意:只有分支中的文件才能够push到共享版本库。