Git:分布式版本控制系统
Ubuntu16.04安装Git:sudo apt-get install git
Git配置:【global:用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址】
$ git config --global user.name yourname
$ git config --global user.email youremail@email.com
创建版本库:首先要创建一个空目录,然后进入空目录,创建仓库【也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的】
$ mkdir learngit
$ cd learngit
$ pwd 【显示当前目录】
$ git init 【将learngit目录创建喂仓库,并生成隐藏的.git目录...等等】
添加文件到版本库:【创建readme.txt文件略】
$ git add readme.txt 【添加readme.txt文件到暂存区】
$ git commit -m "本次提交的说明文字" 【将暂存区的改动文件提交到版本库】
查看仓库当前状态:
$ git status
查看文件修改的内容:
$ git diff
查看详细版本记录:
$ git log
查看简洁版本记录:
$ git log --pretty=oneline
回退到指定版本:【HEAD当前版本,HEAD^上一个版本,HEAD^^上上个版本,HEAD^^^上上上个版本,HEAD~4往上4个版本】
$ git reset --hard HEAD^ 【回退到上一个版本】
撤消至回退之前的版本:
【第一种方式】:如果在此命令窗口下执行过git log,那么找到指定版本的id,并拷贝【版本号可以只拷贝前几位,只要能确定唯一的版本即可】
$ git reset --hard 指定版本的id
【第二种方式】:如果执行过git log的命令窗口早已关闭,那么通过git reflog查找commit id(指定版本的id)
$ git reflog 【在返回的数据中,找到相关的commit id,并拷贝】
$ git reset --hard 指定版本的id
工作区、暂存区、版本库
工作区:在电脑上能看到的目录,比如上面讲到的learngit文件夹
版本库:在learngit文件夹下有一个隐藏的.git目录,此为版本库,非工作区
暂存区:版本库中有很多东西,最重要的就是称为stage(或者叫index)的暂存区,还有git自动创建的第一个分支master,以及指向master的指针HEAD
把文件往版本库里添加的时候分两步完成:
1.git add,把文件修改添加到暂存区
2.git commit,把暂存区的所有内容提交到当前分支
查看工作区和版本库里面最新版本的区别:
$ git diff HEAD -- 文件名
撤销工作区中修改的内容:
$ git checkout -- 文件名
这里有两种情况:
1.一种是文件
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
2.一种是文件
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
撤销暂存区中修改的内容:【先撤销至工作区,再从工作区中撤销】
$ git reset HEAD 文件名
$ git checkout -- 文件名
删除工作区中的文件:
$ git rm 文件名
$git commit -m "说明信息"
撤回工作区中删除的文件:【版本库中如果有此文件】
$ git cheout -- 文件名
远程仓库:【Github】
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key,然后一路回车,使用默认值即可:
$ ssh-keygen -t rsa -C "youremail@email.com"
第2步:登陆GitHub,打开“Account settings”,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容【id_rsa.pub
在用户主目录.ssh文件夹中】
添加远程仓库:
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,在Repository name填入仓库名,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。
现在,我们根据GitHub的提示,在本地的某仓库下运行命令:
$ git remote add origin git@github.com:github账户/github仓库名.git 【关联一个远程库】
本地库内容推送到远程库:
$ git push -u origin master 【第一次推送master分支的所有内容】
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:$ git push origin master 【推送最新修改到远程库】
克隆远程库到本地:
$ git clone git@github.com:github账户/github仓库名.git
创建、合并分支:【当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成】
$ git checkout -b dev 【创建分支dev,并切换到dev分支】
$ git breach dev 【创建分支dev】
$ git checkout dev 【切换到分支dev】
$ git breach 【查看所有分支】
$ git merge dev【将dev分支合并到当前分支】
$ git breach -d dev 【删除dev分支】
$ git log --graph 【查看合并分支图】