吴宏鹏 源自:http://www.liaoxuefeng.com/ Github 基本教程 吴宏鹏 源自:http://www.liaoxuefeng.com/
Git简介 Git是什么? 目前世界上最先进的分布式版本控制系统(没有之一)。 Git有什么特点? 简单来说就是:高端大气上档次!
什么是版本控制系统? 如果你用word写一个论文,说不定有这样的经历: 想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。 如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便? 这个软件用起来就应该像这个样子:
安装Git 在Linux上安装Git : sudo apt-get install git 在Windows上安装Git : msysgit是Windows版的Git,从http://msysgit.github.io/下载 安装完成后,还需要最后一步设置,在命令行输入: $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
创建版本库 什么是版本库? 你可以简单理解成一个目录。 这个目录里面的所有文件都可以被Git管理起来。 版本库是Git版本管理的基本单位 首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit
创建版本库 第二步,通过git init命令把这个目录变成Git可以管理的仓库: $ git init (在你需要成为仓库的目录下执行,如:learngit) 这样,一个版本仓库就建好了。
把文件添加到版本库 注意 : 要真正使用版本控制系统,就要以纯文本方式编写文件。(不能用word,推荐使用vim , notepad++) 在learngit文件夹下新建一个文件readme.txt 第一步,用命令git add告诉Git,把文件添加到仓库:$ git add readme.txt 第二步,用命令git commit告诉Git,把文件提交到仓库:$ git commit -m "wrote a readme file"
把文件添加到版本库 总结: 初始化一个Git仓库,使用git init命令。 添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件; 第二步,使用命令git commit,完成。
时光机穿梭 继续修改readme.txt文件 git status命令可以让我们时刻掌握仓库当前的状态,如果修改了会有提示。 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
版本回退 当我们修改了多次文件并且提交到Git版本库之后(即执行了多次git commit) 我们可以用git log命令查看各次改动。
版本回退 git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。
版本回退 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^ , 上上一个版本就是HEAD^^ 。 $ git log commit 3628164fb26d48395383f8f31179f24e0882e1e0 Author: Michael Liao <askxuefeng@gmail.com> Date: Tue Aug 20 15:11:49 2013 +0800 append GPL 其中,你看到的一大串类似3628164...882e1e0的是commit id(版本号) 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^ , 上上一个版本就是HEAD^^ 。
版本回退 现在,我们要把当前版本“append GPL”回退到上一个版本,使用git reset命令: $ git reset --hard HEAD^ 如果回退的话 , 用git log再看看现在版本库的状态,就会发现最新的没有了。 可以使用git reflog查看命令历史,并且能够显示每一次commit的版本号。 通过版本号可以回到指定版本。 git reset --hard 3628164
版本回退 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^ $ git log commit 3628164fb26d48395383f8f31179f24e0882e1e0 Author: Michael Liao <askxuefeng@gmail.com> Date: Tue Aug 20 15:11:49 2013 +0800 append GPL 其中,你看到的一大串类似3628164...882e1e0的是commit id(版本号) 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^
远程仓库 首先请自行注册GitHub账号 第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key: $ ssh-keygen -t rsa -C "youremail@example.com"
远程仓库 顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面: 点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容 友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔
添加远程库 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步 首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库: 在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
添加远程库 在本地的learngit仓库下运行命令: $ git remote add origin git@github.com:michaelliao/learngit.git 注意,把上面的michaelliao替换成你自己的GitHub账户名 添加后,远程库的名字就是origin 下一步,就可以把本地库的所有内容推送到远程库上: $ git push -u origin master
添加远程库 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样。 从现在起,只要本地作了提交,就可以通过命令:$ git push origin master 把本地master分支的最新修改推送至GitHub
小结 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git; 关联后,使用命令git push -u origin master第一次推送master分支的所有内容; 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
从远程库克隆 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。 注意把Git库的地址换成你自己的。 $ git clone git@github.com:michaelliao/gitskills.git $ cd gitskills $ ls 注意把Git库的地址换成你自己的。 Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
从远程库克隆 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。 注意把Git库的地址换成你自己的。 $ git clone git@github.com:michaelliao/gitskills.git $ cd gitskills $ ls 注意把Git库的地址换成你自己的。 Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
Thank You!