前言:成功不是未来才有的,而是从决定去作的那一刻起,持续累积而成。你好,我是梦阳辰,快和我一块儿搞定Git和Github吧。php
1.Git是目前世界上最早进的分布式版本控制系统。css
解决的问题:
记录了每次修改的:版本,内容,操做用户,修改时间,文档名等。html
2.Git和Github的区别
Git是一个分布式版本控制系统,简单的说就是一个软件,用于记录一个或若干文件内容变化,以便来查阅特定版本修订状况的软件。git
Github是一个为用户提供Git服务的网站,简单说就是一个能够放代码的地方(也能够放其余内容)。Github除了提供管理Git的web界面外,还提供了订阅、关注、讨论组】在线编辑器等丰富的功能。github
Git 并不像 SVN 那样有个中心服务器。web
目前咱们使用到的 Git 命令都是在本地执行,若是你想经过 Git 分享你的代码或者与其余开发人员合做。 你就须要将数据放到一台其余开发人员可以链接的服务器上。本例使用了 Github 做为远程仓库算法
Git的安装shell
1.工做流程
Git本地操做的三个区域:
工做流程:编程
暂存区:至关于购物车存放要购买的物品最后一块儿付款。windows
2.本地仓库操做
什么是仓库?
仓库又叫作版本库,英文名 repository,咱们能够简单的理解成是一个目录,用于存放代码,这个目录里面全部的文件均可以被Git管理起来,每一个文件的修改,删除等操做Git均可以跟踪到。
在安装好后首次使用须要先进行全局配置:
1.点击”Git Bash Here "以打开Git命令行窗口:
$ git config --global user.name "用户名" $ git config --global user.email "邮箱地址"
设置好用户信息,当进行项目修改的时候就会记录用户名
2.建立本地仓库
当咱们须要让Git 去管理某个新项目/已存在的项目的时候,就须要建立仓库。
建议使用空目录学习Git,由于操做失误产生没必要要的错误。目录名尽可能使用英文名。
3.建立目录
$ mkdir 目录名
也能够直接在本地以新建的方式建立。
4.在命令行中进入项目目录 pre_git
$ cd 目录名
5.Git仓库的初始化
即让Git知道须要他来管理这个目录
$ git init
执行后,打开这个项目目录下,点击隐藏目录你会发现多了一个.git文件夹。不能删除,也不能随意更改。
到这里就能够在里面进行开发。
6.Git经常使用指令操做
查看当前工做状态:
$ git status
做用:当咱们忘记项目作到哪里的时候,好比上个厕所回来,开个会回来等。可使用这个命令来判断下一步要干吗。
7.能够在项目目录中,进行开发
8.将工做区文件添加到缓存区:
说明:git add 指令,能够添加一个文件,也能够同时添加多个文件。 语法一:$ git add 文件名 语法二:$ git add 文件名1 文件名2 文件名3 ...... 语法三:$ git add . 【添加当前目录到缓存区中】
9.提交至版本库
$ git commit -m "注释内容"
若是建立了新的文件,从add开始,重复上述操做便可。
若是修改了已提交的文件内容,再从add开始从新提交就行了。
这里的提交等操做只是提交到Git本地仓库。
版本回退分为两个步骤:
1.首先查看版本,肯定须要回到的时刻点
指令:
$ git log $ git log --pretty=oneline
第二种指令:简化了信息。
2.回退操做:
指令:
$ git reset --hard 提交编号
执行操做后,项目目录中的文件会回到指定的时刻。
回到过去以后,这时我又想回到以前的最新的状态怎么办?
首先:查询以前的编号
指令:
$ git reflog
而后再执行
$ git reset --hard 提交编号
小结:
要想回到过去,先获取commit id ,而后经过git reset --hard回到过去。
回到将来:须要使用 git reflog 进行历史操做查询,获取最新的commit id。(编号)
能够发如今写回退指令的时候commit id 能够不用写全,git会自动识别。至少须要写前4位。
线上仓库的操做,以Github为例。(目前为Git仓库提供远程仓库的网站有不少)
1.Github线上仓库的建立
2.使用线上仓库
添加远程仓库(这里添加github)
注意:在git bash中输入 cd /D 注意盘名字必定要是大写。如不输入这个语句 不给git bash定位的话,默认的本地文件位置是在c盘中。而后再cd到以远程仓库相同名字的文件夹中。
第一种方式:基于https协议:
仓库就是目录:
1.建立空目录,名称为shop(任取)
2.复制https对应得地址。
而后在当前目录新建shop目录
$ mkdir shop $ cd ./shop
3.使用clone指令克隆线上仓库到本地。
$ git clone 线上仓库地址
执行后,线上的仓库就被clone下来了,若是clone下来的是一个空目录,克隆下来的目录只有隐藏的.git目录。
4.在上述操做完成后,就能够在本地仓库作对应的操做
好比:(提交至暂存区,提交到本地仓库,提交到线上仓库(远程仓库),拉取线上仓库)
前面几个操做跟上面的本地仓库操做相同。
而后提交到线上仓库:
若是是首次提交,首先应获取权限:(不然会出现403的错误)
由于不是任何人均可以往线上仓库提交内容。
获取权限:
修改".git/config 文件内容:
在url这一项中:
在github.com前面加上:用户名:密码@
如:
url=https://用户名:密码@github.com/用户名/仓库名.git
其它不变。
指令:
提交到线上仓库的指令
$ git push
提交成功以后,你会发现,线上仓库中多你提交的内容。
注意:若是你提交成功下班后:同事也向该远程仓库提交了新的内容。次日上班时,你须要拉去线上的仓库的最新版本
使用命令:
$ git pull
所以在天天工做的第一件事就是git pull 拉取线上的最新版本,下班要作的就是 git push,将本地代码提交到线上仓库。
第二种方式:基于ssh协议(推荐使用)
该方式与前面https方式相比,只是影响github对于用户的身份鉴定方式,对于git的具体操做没有任何改变。
步骤:
1.生成客户端公私钥文件。
2.将公钥上传到Github。
实际操做:
1.建立公私钥文件
你的本地 Git 仓库和 GitHub 仓库之间的传输是经过SSH加密的,因此咱们须要配置验证信息:使用如下命令生成 SSH Key:
在这里直接打开Git Bash:(也能够在桌面单击右键打开)
而后输入命令:
ssh-keygen -t rsa -C "注册邮箱"
若是你没法生成密钥(须先自行安装OpenSSH)而后在执行以上命令。
网上的一些教程使用命令:
$ ssh-keygen -t rsa-C "your_email@youremail.com"
注意:其实your_email@youremail.com表示的就是注册邮箱,即二者是相同的。
以后会要求确认路径和输入密码,咱们这使用默认的一路回车就行。
2.找到id_rsa.pub文件。
成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key。
回到 github 上,进入 Account => Settings(帐户配置)。
为了验证是否成功,输入如下命令:
$ ssh -T git@github.com
结果:Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.
3.而后再本地新建目录(用来保存线上的项目),而后进入目录。
$ mkdir 目录名称 $ cd ./目录名称/
而后克隆目录到新建的目录中:
$ git clone ssh地址
线上的仓库ssh和https地址能够在clone和download中查看
4.后续操做跟https方式同样。
相比于https,这种方式一旦配置好后,之后的项目就不须要一个个去配置用户名和密码了,能够说一劳永益。因此推荐使用这种方式
什么是分支 ?
即项目的分支(不一样的功能):
全部的分支组成一个项目。
在版本回退的内容中,每次提交都会有记录,Git把他们串成时间线,造成相似于时间轴的东西,这个时间轴就是一个分支,咱们称之为master分支。
在开发的时候每每是团队协做,多人进行开发,所以光有一个分支是没法知足多人同时开发的需求的,而且在分支上工做并不会影响其余分支的正常使用,会更加安全,Git鼓励开发者使用分支去完成一些开发任务。
分支的相关指令:
查看分支:git branch 建立分支:git branch 分支名 切换分支:git checkout 分支名 删除分支:git branch -d 分支名 合并分支:git merge 被合并的分支
注意:可使用"git checkout -b 分支名" 指令来切换分支,-b选项表示建立并切换,至关因而两个操做指令。
含"*"表示当前分支。
能够看出咱们都是对分支进行操做。
删除分支以前,须要退出该分支,既不能在使用中删除。
案例:模拟冲突
1.我下班以后,同事对线上项目内容进行了修改,此时本地仓库的内容与线上仓库内容不一致,次日我忘记作git pull操做,而是直接对本地文件进行修改。
当进行提交时,会报错。
2.解决冲突
先进行指令"git pull"操做。
3.打开冲突文件,解决冲突。
和提交内容的用户商量保存哪些内容。删除哪些内容。
而后从新提交后,在进行push操做便可。
这里能够看到上班前进行 git pull 的重要性。
1.图形管理工具
Github for Desktop
对于常用Github的开发人员来讲是很是便捷的工具。
Source tree
老牌的Git GUI管理工具,适合初学者。
TortoiseGit
对于熟悉SVN的开发人员来讲,很是友善。其前辈TortoiseSVN。
自带的Git GUI管理工具。
项目中存在万年不变的目录,例如css,js,images等,或者还有些目录即使有改动,咱们也不想让其提交到远程的文档,此时咱们可使用"忽略文件”机制来实现需求。
忽略文件须要新建一个名为 .gitignore的文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录及其子目录生效。
注意:该文件由于没有文件名,没办法在windows目录下直接建立,能够经过命令行Git Bash来建立。
常见的规则以下: 1.过滤整个文件夹 /mtk/ 2.过滤全部.zip文件 *.zip 3.过滤某个具体文件 /mtk/do.c 4.不过滤具体某个文件 lindex.php
新建.gitignore的文件
指令:
$ touch .gitignore
配置文件.gitignore:
如:
1.忽略/js目录
/js/
做用:借助github托管项目代码。
1.仓库(Repository)
仓库即你的项目,你想在Github上开源一个项目,那就必需要新建一个Repository,若是开源的项目多了,你就拥有多个Repositories。
2.收藏(star)
意为收藏项目的人数。方便下次查看。
3.复制克隆项目(Fork)
浏览他人项目时,点击fork,会在本身的帐号里新建一个相同的仓库,该仓库是独立存在的,可是会显示 forked from 谁的仓库。
4.发起请求(Pull Request)
这是基于Fork的,李四在本身克隆的项目里进行改进完成后,想要将本身改进的项目合并到原来的项目中,因而他就发送了一个Pull Request,给原项目的建立人。假如你是这个项目的建立人,你就能够收到这个请求,这时候你会仔细review他的代码,若是以为不错,就能够接受他的请求,这时候他作的改进,在你的项目里就有了。
步骤:
1.fork项目
2.修改fork的项目
3.新建pull request
4.等待项目新建者合并项目
5.关注(Watch)
若是你关注了某个项目,那么之后只要这个项目有任何的更新,都会接收到通知。
6.事务卡片(Issue)
就是你开源了一个项目,别人再查看你的项目时发现了Bug,或则有些地方作的很差,他就能够给你提个Issue,即问题,而后你看到了这些问题就能够去完善,完善好了就能够将其一个个的Close掉。
即发现代码Bug,可是目前没有成型的代码,须要讨论时使用。
如:别人给Itcastphpgit2提交一个issue
主页概念:
1.Github主页
显示用户动态以及关注用户或关注仓库的动态。
2.仓库主页
项目信息
3.我的主页
我的信息
官方网址:Github.com
新建Github帐户:
注意:github服务器在国外,因此访问较慢或者没法访问。
根据操做验证邮箱,建立远程仓库。
远程仓库的操做:
1.新建文件
2.编辑文件
点击文件名,而后点击“小笔"图案。
3.上传文件
点击上传文件,而后加描述。(Upload files)
4.搜索仓库文件
点击搜索(Find file)
5.下载项目
点击Clone or download
我的站点
访问:
https://用户名.github.io
搭建步骤
1.建立我的站点–>新建仓库(注:仓库名必须是【用户名.github.io】
2.在仓库下新建index.html的文件便可。
注意:github pages 仅支持静态网页
2.仓库里只能是.html文件。
但愿能和你一块儿成长,一同进步,成为更好的本身,我是梦阳辰,一位在校小白!但愿能成为你身边的朋友。
关注公众号【轻松玩编程】回复关键字激活码便可获取:全家桶通用激活码(激活码支持idea,pycharm,webstorm,phpstorm…激活)按期更新。适用于最新及如下版本。(无需破解和修改hosts,若是破解过请卸载从新安装官方原版,若是修改过hosts,请删除你添加的网址,而后从新激活)
回复关键字“电子书”,“计算机资源”,“Java从入门到进阶”,”JavaScript教程“,“算法”,“Python学习资源”,“人工智能”等便可获取学习资源。