一,安装githtml
下载地址 https://git-scm.com/download/wingit
二,如何使用gitgithub
(1)首先你要点进去https://github.com/这个网站,注册一个github帐号。注册好以后,要记住邮箱和密码segmentfault
(2)打开以前的那个图标就是这样一个窗口,首先Git是分布式版本控制系统,因此须要填写用户名和邮箱做为一个标识,分别输入这两个命令,用户名和邮箱须要换成本身的。安全
$ git config --global user.name "ycbou"dom
$ git config --global user.email "qiyincui77@163.com"ssh
(3) 打开以前的那个图标就是这样一个窗口。如今好比我在个人C:/wamp/www/aaa有一个项目,我要对它进行管理怎么办呢。直接在控制台里面输入 cd c:/wamp/www/aaa 以后你就会在aaa这个目录里面了。那如何对它进行管理呢。直接在控制台输入git init编辑器
以后去查看aaa目里会多了个.git 的文件夹,若是看不见也没事,由于隐藏文件不可见分布式
下面去新增一些文件,随便输入些内容,而后再git里面输入 git status。会发现添加的文件名是红色的网站
红色说明文件作了修改可是还没保存到本地仓库,咱们紧接着执行 git add . 再敲git status 发现刚才的红色文件名变成绿色的了,
咱们继续敲 git commit -m "作修改"
敲完以后,使用git status 发现上面说工做区很干净。没有文件要被提交
三,git原理
git 分为工做区、暂存区、本地仓库
工做区:你如今编辑器所处的那个工程里面,
git status 是状态查看,查看你工做区和暂存区有没有文件被提交到本地仓库,若是有工做区未向暂存区保存就显示红色
若是有暂存区没有提交到本地仓库就绿色
什么是本地仓库呢,就是一开始说的那个不可见的文件,你一执行git init就会有一个本地仓库出来
若是从工做区把文件提交到暂存区呢?就是使用 git add . .表明全部,也能够写成 git add index.html 【index.html】
就是你作了变更的文件名 git add . 就是把文件从暂存区提交到本地仓库
使用 git commit -m ‘作修改’ 引号里面的内容是本身添加的一个备注,
在文件里继续添加一段话,再git status 查看当前状态。发现有未向暂存区提交的保存 接着
git commit -m ‘第二次修改’ 将暂存区文件提交到本地仓库,以后 再用git status 查看,
发现已经没有文件提交;了
四,版本回退
到目前为止,咱们向工做区提交了两次修改,git 给咱们提供了一个git log能够查看最近的提交历史
若是以为很乱可使用 git log --pretty=oneline
能够看出咱们的两次提交,前面那串黄色的就是咱们的版本号,如今要回到我原先的版本怎么办
可使用git reset --hard HEAD^ 这个命令回退到上一个版本
回到上上个版本,可使用命令 git reset --hard HEAD^^
咱们也能够同给某个版本号回退到相应版本
git reset --hard 【版本号】
若是我如今又发现原来新版本的解决方法了,我又想回到新版本上去怎么办呢?
如今用git log 已经不能看到新版本的版本号了,只能采用新命令了 叫git reflog 来查看命令历史
使用git reset --hard 【版本号】回到最新版本
如今接着往下进行,在index.html 接着添加一行
后来发现这句话不慎和是,这个时候能够直接删除,而后git add . 就行了。
可是也能够经过git checkout -- index.html .此时前面那句话没有了,这种状况适用于咱们没有git add到暂存区之气an
若是咱们已经git add到暂存区了,怎么撤销修改呢 咱们可使用git reset HEAD index.html 先撤销暂存区的修改
而后咱们能够经过命令git diff查看暂存区和工做区有什么不一样,以后咱们能够经过git checkout --index.html
发现已经修改好了,可是万一咱们已经提交到仓库里,那就是上面说的版本回退了
5、删除文件
新建一个test.txt git add tsxt.txt 已经 git commit -m "xxx"
如今若是要删了,经过git status 发现工做区和本地库已经不同了,
若是确实要删除 就 git rm test.txt 以后再git commit -m 'remove'
若是删除错了,还原回来的话 用 git checkout -- test.txt
6、远程仓库
首先你要点进去https://github.com/这个网站,登陆你刚才注册的github帐号。
ssh-keygen -t rsa -C youremail@example.com
把这个邮箱替换成本身的
以后一路回车,若是一切顺利的话你去你的C盘下去找你的user文件夹,有的叫用户,你在里面搜索一下有没有一个.ssh的文件夹,把它打开以后,里面有这几个文件
以后接着打开那个https://github.com/网站,登陆进去。
点击右边这个绿色的图表,点开下拉框以后里面有个setting。
打开以后随便写入一个title,而后打开你刚才找到的再C盘里的那个id_rsa.pub.把里面的内容复制到那个key里面去,以后点击添加便可。
以后回到一开始的这个页面,
点击中间的那个加号
选择第一个,这就至关于你本身在远程建了一个仓库。
点击以后,会出来这样一个页面。如今咱们在那个名字哪里写上aaa,直接点击建立就好。
目前,在GitHub上的这个learngit仓库仍是空的,GitHub告诉咱们,能够从这个仓库克隆出新的仓库,也能够把一个已有的本地仓库与之关联,而后,把本地仓库的内容推送到GitHub仓库。
如今,咱们根据GitHub的提示,在本地的aaa仓库下运行命令:
$ git remote add origin git@github.com:BrouceLee/aaa.git
请千万注意,把上面的BrouceLee替换成你本身的GitHub帐户名,不然,你在本地关联的就是个人远程库。
添加后,远程库的名字就是origin,这是Git默认的叫法,也能够改为别的,可是origin这个名字一看就知道是远程库。
接着执行命令git push -u origin master
执行完以后,咱们发现咱们的远程库和本地仓库已经同步了。
从如今起,只要本地做了提交,就能够经过命令:
$ git push origin master
把本地master分支的最新修改推送至GitHub,如今,你就拥有了真正的分布式版本库!
7、从远程库克隆
上次咱们讲了先有本地库,后有远程库的时候,如何关联远程库。
如今,假设咱们从零开发,那么最好的方式是先建立远程库,而后,从远程库克隆。
首先,登录GitHub,建立一个新的仓库,名字叫gitskills:
咱们勾选Initialize this repository with a README,这样GitHub会自动为咱们建立一个README.md文件。建立完毕后,能够看到README.md文件:
如今,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:
咱们在想要建立项目的地方执行下面的命令
git clone git@github.com:BrouceLee/gitskills.git
如今去你你想要建工程的地方开始,就能够发现大致上已经建好了。
分支在实际中有什么用呢?假设你准备开发一个新功能,可是须要两周才能完成,第一周你写了50%的代码,若是马上提交,因为代码还没写完,不完整的代码库会致使别人不能干活了。若是等代码所有写完再一次提交,又存在丢失天天进度的巨大风险。
如今有了分支,就不用怕了。你建立了一个属于你本身的分支,别人看不到,还继续在原来的分支上正常工做,而你在本身的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工做。
首先我来建立一个分支
执行命令git checkout -b dev 这样就建立好了一个dev分支。
咱们来介绍一下,最开始的时候咱们的全部操做都是默认在一个叫作master的分支上操做的,包括提交到远程库,等等。关联远程库的时候也是从远程关联master分支。当咱们用dev这个分支写完一个项目以后,咱们要把这个分支所作的工做向master分支进行靠拢.
咱们如今能够经过命令git branch来查看一下全部的分支。
git branch命令会列出全部分支,当前分支前面会标一个*号。
而后,咱们就能够在dev分支上正常提交,好比对index.html作个修改,加上一行
而后咱们执行git add index.html以及 git commit –m “use the dev first”
如今我dev的分支工做已经作完,如今我能够切换回master分支。利用命令
git checkout master
切换回master分支以后,咱们发现index.html里面咱们新加的那句话不在了。由于咱们刚才是在dev分支上作的提交。如今咱们要把分支合到master上,就利用命令 git merge dev就能够了,此时再去查看index.html发现咱们在dev里面作的操做已经在master里面了。如今咱们可使用命令git branch –d dev来删除dev这个分支,以后再使用git branch来查看分支发现只有master一个分支了。由于建立、合并和删除分支很是快,因此Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工做效果是同样的,但过程更安全。
如今咱们考虑这样一种状况,咱们新建了一个分支feature1,利用feature1来进行把index.html里面再加一行,首先切换到feature1这个分支,而后修改index.html,以后提交。
而后咱们切换回master分支,如今咱们在master里的index.html里面加一句话,以后进行提交。以后咱们按照刚才的那种方式合并两个分支。git merge feature1会发现有冲突出现
此时应该怎么解决呢,此时必须手动解决冲突。
在实际开发中,咱们应该按照几个基本原则进行分支管理:
首先,master分支应该是很是稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,好比1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每一个人都在dev分支上干活,每一个人都有本身的分支,时不时地往dev分支上合并就能够了。
因此,团队合做的分支看起来就像这样:
最后推荐一个详细的分工合做的网站,必定要看。http://www.javashuo.com/article/p-udnzcefn-ds.html
https://www.cnblogs.com/my-freedom/p/5701427.html