本节文档将告诉你如何将自己的项目传到github上,成为一个开源项目。
目录介绍
- 如何注册、登录github
- 本地git的安装
- git原理
- git的使用
一.注册、登录github
1.在浏览器中输入网址https://github.com/,输入用户名、邮箱、密码注册一个github账号
2.激活账号后,用此账号登录github.点击页面的sign in按钮,弹出如下页面,登录
3.登录成功后,在github上新建一个仓库,存放上传的项目代码。
经过以上步骤,我们已经在github上建立了一个远程的仓库,接下来,需要在本机环境下搭建git环境,使用git命令将本地项目推送到远程git仓库中。
二.本地git的安装
1.这里我们讲一下window系统上git的安装,从git官网下载一个window上git的安装包,如图:
2.我的电脑是32位系统,因此选择第一个安装包Git-2.7.2-32-bit.exe,一直下一步下一步安装即可。
三.git原理
1.什么是git
这个去google一下可以搜出一大堆,git就是一个软件管理器,不同一般的是它是分布式的,不仅有一个中心的服务器控制最新版本代码,而且每个开发者自己还有个本地仓库,所以在开发过程中都是先将代码提交到本地仓库再推送到中心服务器上的,这样的好处就是每个人都依赖于中心服务器来实现交互,但又不会被中心服务器限制,就算中心服务器挂了,也能很容易的找到最新版本的代码,而且我自己的工作依然可以顺利进行,提交到本地仓库,当中心服务器修复之后,再将自己仓库的东西推送到中心服务器。当然它还有很多的不同点,以后再来比较git和svn。
2.自己的git仓库
我们要进行开发,提交代码和中心服务器进行交互,首先我们要有自己的一个开发基地,也就是我们自己的git仓库。拥有自己的git仓库的方式有两种,一就是在自己已有的目录里初始化自己的git仓库然后和中心服务器建立连接,更新最新代码到自己的git仓库。二就是将一个已经存在的项目克隆到自己的目录成为自己的git仓库。
执行git init命令,就会创建并初始化git仓库,这个时候在该目录下会产生一个.git的隐藏文件夹,而该目录就是你的工作目录,你的一切行为都是在这个目录里,而这个.git文件夹就是你的本地仓库,当你进行了一些文件操作之后,认为可以提交了那么首先你就是提交到本地仓库也就是这个.git中,然后再推送到中心服务器。或者直接克隆一个仓库到本地作为git仓库,也是一样的。当你进入到这个.git目录中,会发现里面还有很多的子目录和文件,有的是很重要的,这里说几个,config文件,这是你项目的配置文件,里面有中心服务器的信息和分支信息,HEAD文件指向当前的分支,index文件是暂存区的相关信息,logs目录中都是相关操作产生的日志,这个很重要,因为日志是我们操作的唯一证据,我们本地的版本控制也靠它,objects目录里面存储的就是所有 的数据,也就是快照,refs目录里是存储指向数据提交对象的指针。
乍看之下不知道说的什么,主要是里面的很多名字不知道是什么东西,下面再来看看一些名字概念,分支和提交对象以后再讲这个涉及版本的控制,我们先看最基本的。
3.git的分层结构
刚开始学习git的时候,总是一头雾水,又是什么工作目录,又是什么暂存区,又是什么本地仓库,又是什么远程仓库,还尼玛快照,看的我头晕眼花的。但是只要把这几个概念弄清楚,那么最基本的开发就不是问题了。先来看看我所理解的git的分层结构:
git的工作总共分四层,其中三层是在自己本地也就是前面说的git仓库,包括了工作目录,暂存区和本地仓库,工作目录就是我们执行命令git init时所在的地方,也就是我们执行一切文件操作的地方,暂存区和本地仓库都是在.git目录,因为它们只是用来存数据的。远程仓库在中心服务器,也就是我们做好工作之后推送到远程仓库,或者从远程仓库更新下来最新代码到我们的git仓库。git所存储的都是一系列的文件快照,然后git来跟踪这些文件快照,发现哪个文件快照有变化它就会提示你需要添加到暂存区或是提交到本地仓库来保证你的工作目录是干净的。
这个怎么理解呢,git中的文件有两种状态,一种是被跟踪的,也就是提交到本地仓库的文件,因为本地仓库要保管它们当然得跟踪他们,对它们负责,还有一种就是未被跟踪的。那么当我们添加新的文件时,它不是被跟踪的,因为本地仓库里面没有这个文件,它是外来的,本地仓库目前还不需要对他们负责。但是如果是对仓库已经存在的文件进行修改,那么这些文件就是被跟踪的文件,就可以通过git status查看他们的状态来进行相应的操作。当然我们也可以生成一个.gitignore文件,里面指定要忽略的文件类型,然后这些文件就不会被跟踪,不管怎么改变它们,git status都不会提示你需要做什么操作的。
所以当我们在工作目录中进行文件操作后,要先添加到暂存区,然后再将暂存区中刚添加的文件快照提交到本地仓库,然后再将本地仓库的最新版本文件快照推送到远程仓库。这个文件快照其实就是各个文件的在被添加到暂存区时的状态,就和照相一样的,留下每个不同时刻的快照,方便以后查询,而git存储的就是这些一系列的快照。说到这个快照就要说说git的对象了。
四.git的使用
1.设置用户名和邮箱(告诉Git你是谁)
git config --global user.name “feng”
git config --global user.email “414582343@qq.com”
git config --list
注意:敲错命令,重新再敲一次覆盖即可
2.创建版本库(给git一个家)
- git init test - cd test && git init 注意: 1.git init命令只需要执行一次即可 2. .git:把本仓库的所有的版本跟踪信息都放置在此目录(版本控制的核心目录,不要动)
3.版本控制(git提交三部曲:修改创建文件,加入暂存区,提交到仓库)
新建index.html,输入内容 git add index.html(添加到购物车) git commit -m "针对此次提交的说明"(收银台结账) 修改index.html,输入内容 git add index.html git commit -m "修改说明" git status:可以时刻查看当前文件的状态信息 文件还没有被执行git add index.html ,显示红色,表示还没有添加到暂存区 文件已经被执行git add index.html ,显示绿色,表示添加到暂存区
暂存区(超市的购物车)
4.查看历史(回忆曾经的点点滴滴)
- git log:查看当前的提交记录 - git log --oneline:将每次提交记录做一行输出 - git reflog:查看所有的历史提交信息(包括回撤的提交信息)
5.回撤(来瓶后悔药吃吃)
- git checkout -- index.html:撤销工作区的修改 - git reset index.html:撤销暂存区的提交和修改(需要结合git checkout -- index.html) - 版本回退 - git reset --hard HEAD^:回退到上一个版本 - git reset --hard 33981:回退到指定版本
6.分支(多人合作开发,或者单人修复bug等,不要在主分支动手脚)
- git branch:查看分支列表 - git checkout test:切换分支 - git checkout -b test:新建并切换test分支 - git merge test:合并test到当前分支
7.解决冲突
冲突文件内容展示: 1. 冲突开始标识:”<<<<<<“后跟着当前分支名称(此处为HEAD) 2. 结束标识:”>>>>>>”被合并的分支名 3. 冲突区内,内部再次被分隔符”=======“分为两个部分,分隔符之上为当前分支的内容,分隔符之下为被合并分支的修改的内容 解决冲突: 确认正确的代码,删除不需要的代码,再次git三部曲,提交
8.远程操作
现在有本地库,没有远程库 - 在github上新建空仓库 - git remote add origin url:关联本地库和远程库 - git push -u origin master:将本地代码提交到远程库 - 关联错误,删除关联错误命令:git remote rm origin #### 先有远程库,从远程库克隆项目到本地 - git clone url:克隆远程库的项目(使用https协议)
注意:
1.URL地址采用https地址,以后学习公钥私钥后再使用ssh地址