msysGit:纯控制台操做css
Git:可使用控制台也可使用界面git
GitHub:可使用控制台也可使用界面github
你的本地Repository由 git 维护的三棵“树”组成。第一个是你的工做目录(Working dir),就是本地磁盘,例如:E:\first;第二个是缓存区(Index),它像个缓存区域,临时保存你的改动;最后是HEAD,是你要push 到Github 服务器的文件。windows
图0浏览器
这幅图以及文字描述是来自网址。缓存
在浏览器打开Github在上边创建一个Repository:
服务器
图01网络
Repository 须要填写的内容:app
图02ssh
Repository 建立完成的大体效果:
图03
建立Repository 成功以后,咱们就能够进行git 的使用了。
第一你须要进入一个working dir,我这里将放置在E盘的根目录,使用的指令为:
1 #cd 就是进入这个目录的意思 2 cd e:
运行后的效果以下:
图04
第二你须要将Guihub 中的Repository 下载到本地磁盘中,这里是E盘,使用的指令为:
1 # clone(下载)Github Repository到本地E:\first 2 #yourName:Github用户名 3 Git clone https://github.com/yourName/first.git
运行的效果以下:
图05
执行完后,E盘下就会多出一个first目录(E:\first),默认这个目录名称和咱们Github上建立的项目名称一致,固然假如你但愿捡出后的根目录不想叫first,想叫second,执行命令:
1 #clone Repository 到E:\second 2 git clone https://github.com/yourName/first.git second
执行完成后,咱们就看到E盘下会新建一个second的目录(E:\second)。
在first根目录下,新建一个1.txt文件(E:\first\1.txt),而后写入一段文本:
1 Hello Github!
执行命令:
1 #将1.txt 提交到Index 2 git add 1.txt
运行的效果以下:
图06
使用指令:
1 git status
能够看到新增到Index中的文件1.txt,运行效果以下:
图07
使用指令:
1 #提交Index 中的文件到Head 并添加备注“myfirst" 2 git commit –m ”myfirst”
运行的效果以下:
图08
使用指令:
1 git status
比较的结果以下所示:
图09
假设此时你在Working dir(E:\first)中添加一个文件2.txt,再对比Working dir 与Head 中文件的差异结果以下:
图10
使用指令:
1 #将Head 的文件push 到Github 服务器中 2 #master:是Repository的主分支 3 #每个新建的Repository 都有一个默认的master分支 4 git push origin master
显示的结果以下:
图11
查看Github 上的文件,以下所示:
图12
到此第一种方法就完成了。
注意:完成以上步骤以后你就能够向Github 服务器push 文件了,可是每次push 时都会要求你输入密码,若是你不想那么麻烦,那么你可使用指令:
1 #缓存你的帐户信息,这样就不须要每次都输入帐号了 2 git config --global credential.helper wincred
Github 官网帮助文档。运行的效果以下:
图13
首先咱们须要生成ssh key,使用指令:
1 #其中引号内是你的Github 登陆邮箱 2 ssh-keygen -t rsa -C "your_email@youremail.com"
Key 的保存目录不建议更改(Github 官网的建议)因此咱们通常是直接按三下Enter 键会生成如下的界面:
图14
复制ssh key,使用指令:
1 #其中的“~”是系统默认的路径 2 #个人电脑的路径是C:\Users\Administrator。 3 clip < ~/.ssh/id_rsa.pub
指令的运行效果以下所示:
图15
没有提示就表示已经成功了。你也能够选择到目录C:\Users\Administrator\.ssh,这个目录因电脑也不一样,你能够根据图14的红线画出的目录去找到(使用记事本打开),复制其中的全部内容。
在浏览器在登陆你的Github,进行设置,以下图所示:
图16
点击SSH keys:
图17
点击Add SSH key:
图18
输入ssh key:
图19
为了确保一切工做,使用如下指令测试ssh key 是否工做:
1 #测试ssh key 是否工做 2 ssh –T git@github.com
若是在建立ssh key时设置了密码,那么这里你会被要求输入密码(图14的内容)。 我这里并无设置密码,输入“yes”,出现红线画出的提示语句则说明你成功了。
运行的效果以下所示:
图20
这里我将在使用e:\first 做为Working dir,使用建立Repository 的指令:
1 #初始化一个本地Repository 2 git init
会产生一个隐藏文件夹.git。
图21
网络上有许许多多的教程都使用到了如下的语句:
1 git config --global user.name “your name” 2 git config –-global user.email “your_email@youemail.com”
他们都没有说明白为何须要使用,Github 帮助文档关于user.name,关于user.email。我这里来个总结性的说明:这两名的主要做用是告诉Github 对这个文档进行修改的名字是什么。
1. 没有使用这两条指令,那么push 到Github 的用户名将会是你的邮箱地址,应该是你在ssh key 中设置的邮箱地址
2. 若是你只设置了user.name那么Github 将会使用你的用户名做为修改者的名字
3. 若是你只设置了user.email 那么Github 会根据你提供的邮箱地址查找你在Github 上的用户名修改者的名字,若是没有查找到则使用你设置的user.name
4. 若是两个都设置,将会优先根据你提供的邮箱地址查找你在Github 上的用户名做为修改者的名字,若是没有查找到则使用你提供的user.name
这里我只设置提交者的名称:
图22
由于这里咱们并无clone Github 上的Repository 到本地Working dir,因此咱们须要将我本地的Repository 链接到远程Github 服务器,使用以下指令:
1 #将我本地的Repository 链接到远程Github 服务器
2 yourName:你Github 的用户名
3 yourRepo.git:你Github 上的Repository 4 git remote add origin git@github.com:yourName/yourRepo.git
在其余的博客中咱们常常会看到另一种链接的指令:
1 #将我本地的Repository 链接到远程Github 服务器
2 yourName:你Github 的用户名
3 yourRepo.git:你Github 上的Repository
4 git remote add origin https://github.com/yourName/yourRepo.git
那么这两个有什么区别呢?第一个连接是基于HTTPS 形式的, 而第二个连接是基于SSH 形式的,Github 帮助文档。
这里必须使用SSH 形式的,若是使用HTTPS 你照样须要每次push 都须要输入帐号与密码。
运行的效果以下所示:
图23
注意:若是你以前已经链接到了Github 服务器,那么运行后会出现以下的错误:
图24
此时有两种的解决办法,第一种方法:
图25
接着你再链接就能获得图23 的效果。
第二种比较高端的做法(Guihub帮助文档),运行指令:
1 #USERNAME:Github 用户名 2 #OTHERREPOSITORY:Github 上的Repository 3 git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
运行的效果以下所示:
图26
你能够输入指令:
1 #查看你如今链接的Github 服务器地址 2 git remote –v
运行的效果以下:
图27
因为我使用的Github Repository 是已经添加过文件的(不是新建的),因此须要先将Github 上的文件下载到本地Repository,要否则是没法将本地的文件push 到Github 的。若是你是新建的Repository 就能够跳过这个过程。使用指令:
1 # 将master 分支中的文件下载到本地Repository 中 2 git pull origin master
运行的效果以下:
图28
为了演示,我建立一个新的文件:2.txt,并添加内容“good learner”到文件中。使用指令:
1 # 建立一个文件2.txt 2 touch 2.txt 3 #输入"good learner"到文件2.txt 中 4 echo ‘good learner’> 2.txt
运行的效果以下:
图29
咱们须要先将文件提交到Head中,使用指令:
1 #提交文件到Index 2 git add 2.txt 3 # 提交文件到Head并添加备注”first" 4 git commit -m “first”
运行的效果以下所示:
图30
如今咱们就能够将内容push 到Github 服务器中了,使用指令:
1 git push origin master
运行的效果以下所示:
图31
咱们再到Github 网站上去看看:
图32
第二种方法到此结束了。
.gitignore 就是告诉git 哪些文件不要被上传,这是一个很重要而且很实用的文件。咱们创建一个工程每每会生成许多的配置文件以及中间文件,这些文件是不须要push 去服务器的,并且每每这些文件会很是的大。若是咱们更改了不少的文件,手动一个个添加的话也太麻烦了,咱们可使用指令:
1 #将全部的修改或者新建都添加到Index 中 2 git add –A
这时咱们就须要.gitignore了。
你能够直接在Working dir(我这里是E:\first),中建立文件.gitignore,接着手动在里边添加你要过滤的内容。
文件 .gitignore 的格式规范以下:
1. 全部空行或者以注释符号 # 开头的行都会被 Git 忽略。
2. 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式之外的文件或目录,能够在模式前加上惊叹号(!)取反。
3. 星号(*)匹配零个或多个任意字符;
4. [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
5. 问号(?)只匹配一个任意字符;
6. 若是在方括号中使用短划线分隔两个字符,表示全部在这两个字符范围内的均可以匹配(好比 [0-9] 表示匹配全部 0 到 9 的数字)。
下面是例子:
1 # cat .gitignore 2 *.[oa] 3 # 忽略全部 .a 结尾的文件 4 *.a 5 6 # 但 lib.a 除外 7 !lib.a 8 9 # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO 10 /TODO 11 12 # 忽略 build/ 目录下的全部文件 13 build/ 14 15 # 会忽略 doc/notes.txt 但不包括 doc/server/notes.txt 16 doc/notes.txt
注意:有的时候会发现你添加在.gitignore 中的过滤条件不起做用了,好比我在.gitignore 中添加1.txt,但愿不提交1.txt 文件,可是因为以前我已经使用指令:
1 # 提交1.txt 到Index 2 git add 1.txt,
就是说文件已经被添加到Index 中了,因此它不会被过滤,也就是仍是会被push。咱们可使用指令:
1 # 将1.txt 移出Index 2 git rm --cached 1.txt
这样1.txt 就不会被push。
推荐一个网站能够自动生成 .gitignore 文件,网址。
2015-04-27 14:17:25