GIT

Git简介

Git诞生

集中式管理收费,分布式管理BitKeeper收费,后来由于有人破解,BitKeeper对Linux平台收回使用权,Linus用两个星期用C开发了分布式版本管理系统Git。

集中式和分布式

集中式SVN、CVS必须联网,如果使用需先从中心服务端更新数据,编写代码之后还要上传回中心服务

分布式无需中心服务

安装Git

windows安装

msysgit是Windows版的Git,从https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

安装后需要配置

$ git config --global user.name "yourname"

$ git config --global user.email "[email protected]"

创建版本库(repository)

让git管理某一个文件夹

初始化,把这个目录变成git可管理的目录

$ git init

其中的.git是git用来管理版本库的,默认是隐藏文件

版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

把文件放入git

$ git add "文件名"

$ git add -A//添加所有改动

$ git add *//添加新建文件和修改,不包含删除

$ git add .//添加新建文件和修改,不包含删除

$ git add -u//添加修改和删除,但是不包括新建

提交

$ git commit -m ""

在commit之前撤销add文件

$ git reset //撤销提交单独文件

$ git reset//撤销所有

-m后面是用来说明这次文件修改了什么

每次修改都要git add -A,然后再git commit把修改的内容提交,add是把内容存在暂存区,

控制回退

$ git status用来查看仓库的状态

no changes added to commit (use "git add" and/or "git commit -a")

上一句表示有文件修改,但是没有提交

$ git diff用来查看修改了什么东西,也就是之前$ git commit -m输入的内容

版本回退

$ git log用来查询之前的信息记录,单行显示用$ git log --pretty=oneline,显示方式是从近到远,HEAD表示是当前的版本,前面的数字是commit id

$ git reset --hard 3628164回退到某一个版本

$ git reflog可以查看之前做过的操作,可以再回退错误的情况下返回

暂存区和工作区

git 默认会为我们创建一个默认分值master,以及指向master的指针head

.git是git的版本库,其中最重要的是stage(暂存区)

add指令相当于将文件提交到暂存区(stage),commit是把文件提交到分支

撤销修改

git checkout -- file如果工作区修改内容没有提交到stage,直接恢复到没修改之前的,如果没有提交到分支,那就回到上一次缓存区内容

删除操作

git rm file从版本库中删除某个文件

远程仓库

创建SSH KEY

Github需要通过公钥来识别是否是你提交的

$ ssh-keygen -t -rsa -C "邮箱地址"

登录github在设置中找到SSH and GPG Key 把SSH中title随意些,下面粘贴上user目录下的.ssh下的id_rsa.pub的内容

添加远程库

(这种方法是现有的本地库,后有远程库)

在github中create a new repo 按钮,创建一个远程库

$ git remote add origin [email protected]:“自己的地址”把本地页面与远程库关联;

$ git push -u origin master第一次,远程库中没有数据,需要使用该指令将本地版本库中内容push到远程库

以后只要本地做了修改,使用add、commit 然后使用$ git push origin master即可同步到远程库

从远程库克隆

(这种办法是现有远程库,然后克隆到本地)

首先先创建一个远成仓库,在github上创建

git clone [email protected]:brightestcandle.git用来clone一个远程仓库到brightestcandle文件夹下,会在打开gitbanch目录下创建

把文件放到该目录下之后,addcommit -m “” git push即可

*此处需要注意的是,git支持https协议,使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

你可能感兴趣的:(GIT)