git全部使用步骤
Posted Eilen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git全部使用步骤相关的知识,希望对你有一定的参考价值。
今天要讲的内容:项目管理和工具
Git:版本控制系统
Less:动态的css语言,提高编写CSS的效率
Gulp:项目自动构建工具,对html,css,js,image进行压缩,合并等操作。
一.什么是git
1.Git是什么
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
CSV,SVN。
疑问:
分布式是什么意思?
版本控制是什么东西?
2.为什么需要Git
所以:版本控制可以帮助我们实现两件事情
l 自动记录每次的修改,并且可以方便的切换到任一版本
l 可以完成多人协作开发
3.Git和GitHub有何区别
Git是一款免费开源的分布式版本控制系统 --- 工具,就是一个软件
Github是用Git做版本控制的代码托管平台 --- 平台 就是一个网站
二.快速入门
1.安装
下载的是windows下面的安装。
最简单的就是 全部使用 默认值。
安装完成之后,可以在任意目录,点击右键,可以看到
2.使用
典型流程:
l 初始化一个Git仓库(git init)
l 设置用户名和邮箱
l 添加文件到仓库(git add 文件名1 文件名2 )
l 提交 (git commit -m 说明文字)
l 查看版本 (git log)
l 回退 (git reset --hard HEAD^/commit_id)
先建一个目录,作为项目目录。
(1).初始化一个git仓库
查看刚才的目录,如下:
注意,这个.git目录是隐藏的文件夹,需要设置显示隐藏的内容,才可以看见。
我们不要在这目录中进行任何的操作。
(2).设置用户名和邮箱
必须要设置,否则后续的一些操作将无法完成。
(3).添加文件到仓库
这里的文件,就是我们的项目文件。如index.html,test.css等。
主要是是文本类型的文件,包括txt、html、css、js等。
Text/html
Text/CSS
Text/javascript
对应的图片,word就不是。
添加如下:
注意:我们在使用命令的时候,经常没有提示。如果有提示,基本都是错误。
Linux中的哲学:没有消息就是好消息。
(4).提交
将刚刚添加到仓库的 所有文件,提交成第一个版本。
Git Commit -m 说明
说明不能少,如果没有写,则无法commit。
(5).查看版本情况
使用git log 查看版本情况
后续的重复3~5这三个过程。
比如,我又新建了一个base.css文件
然后使用git add base.css,添加到仓库
接下来,就可以使用git commit来提交
(6).回退
我们可以回退到任何一个版本。
git reset commit_id
比如,我又后悔了,需要回到之前的那个未来的版本,可以使用git reset commit_id
三. Git基本概念及原理
1.基本概念
l 工作区
l 版本库
l 暂存区
l 分支
在当前项目目录,以.git目录作为分界线,一分为二。.git是版本库,也就是Git仓库。
.git之外所有的内容都是工作区。
工作区:其实就是我们的项目目录及文件。我们进行常规开发的内容。
版本库:.git目录,是Git工具用于管理版本的这个目录,千万不要动。
对于版本库,也就是.git 目录所控制的部分,又有两个非常重要东西:
l 暂存区
l master分支
回顾刚才的操作,需要将一个文件添加到版本库中的某个版本,做了两步操作:
第一,使用git add
第二,使用git commit
实际上,在使用Git的时候,不能将文件一步添加到版本库的某一个分支。必须要分两步,
第一步,将文件从工作区添加到 版本库中的暂存区。
第二步,将暂存区中的所有内容一次性提交到版本库的当前分支。
所以,在刚才的操作中,使用git add,其实就是将文件,如index.html添加到 暂存区中。
然后 使用git commit 将暂存区中的所有内容 提交给 master分支。
打一个比方。
2.原理剖析
核心:理解暂存区,以及具体的执行过程。
当前工作区中的两个文件,都已经添加到版本库中的master分支。
此时,暂存区是空的,然后尝试使用git commit来提交,结果如下:
在工作区中新建一个test.js文件,
此时,test.js和版本库没有任何关联,不在版本库中的任何分支上。
如图:
如果,此时使用git commit命令尝试提交,会出现如下情况:
接下来,将test.js加入到 暂存区。
在示意图中,如下:
此时,暂存区中已经有内容了,所以可以使用git commit进行提交了。
一旦将暂存区中的内容commit到master中,那么暂存区就会清空。
再次进行 commit操作,不会有任何提交的。
四.Git基本操作
主要掌握一些几个命令
l git config
l git init
l git add
l git commit
l git status
l git reset
主要,这些命令都是基于单人开发的版本控制。
1.git config
获取或者设置git 的配置项。
有哪些呢?
git config --list
获取具体的某一个配置。
Git config 配置项名
如:
2.git init
Init是initial的简写,初始化的意思。
我们要使用Git,第一步就是需要初始化一个版本仓库,使用git init即可。
在当前项目目录下,新建一个版本库时,会自动创建一个.git的隐藏目录。
疑问:我是先建版本库,还是先建项目的目录结构呢?
好的做法,就是先建 版本库。然后再进行项目开发。
.git目录用git用来控制版本的,不要在这个目录中做任何操作。
开发的时候,将其隐藏即可。
3.git add
作用:将工作区中的 文件 添加到 暂存区中。
添加的时候,可以一次性添加多个,每一个直接使用空格隔开即可。
如果在一个文件夹下,有多个文件,如下:
可以直接是文件夹名,一次性添加,如下:
当然,在实际开发的时候,可能在后续的开发过程中,新增了一些文件,最好是单独添加。
4.git commit
作用:将 暂存区中的 内容,一次性添加到 mater分支。
使用的时候,需要注意:
一定要添加说明,有两种方式:
l git commit -m 说明文字 (提倡)
l git commit 要结合 vi编辑器
如果直接写上 git commit ,那么它会弹出vi编辑器的界面,
Vi编辑器的模式:
编辑模式,按i进入,
命令模式,按esc
在命令模式下,先输入 : 然后是命令,比如要保存并退出。w保存,q退出。
: wq 就可以保存退出。
5.git status
查看状态
任何时候都可以查看 版本库的状态。
6.git reset
Reset,重置。
作用,回退到指定的版本。
基本用法
需要指定两个东西:
l 回退到哪个版本,使用commit_id来指定,或者 HEAD^、HEAD^^、HEAD^^^、HEAD~n
l 使用哪种方式,硬回退 --hard,软回退。--soft
为了测试效果,使用硬回退。
Git reset --hard commit_id
查看当前版本
现在,向会退到 第二个版本。找到它的commit_id,如下:
65c7825f56ba6f3e8de7d075b14c42e51d884787
此时,就回到了第二个版本的初始状态。
要注意,此时第三和第四个版本的文件,虽然已经不在工作区,但是它还保存在版本库中。所以可以随时再回退。
比如,我需要回到第三个版本。
注意,这个是相当于回到当前版本的未来版本。使用git log 只能查看当前版本之前的所有版本。
如何获取所有版本的commit_id呢?
针对这个需求,需要分两种情况:
l 第一,git bash窗口没有关闭,使用前面查过的commit_id
l 第二,git bash窗口关闭。比如,昨天做的操作,今天后悔了。 使用 git reflog
如果是第一种情况,直接找
012ae56a05e5e9d7ddcb2b97a62e68a9820b2abf
使用
直接使用 git reset 命令即可。
五.协同开发
1.多人协作原理
2.多人协作实现
基本流程如下:
l 创建一个git裸服务器 (git init -bare)
l 从裸服务器将版本库克隆至本地(git clone )
l 本地常规操作
l 推送版本至服务器 (git remote + git push origin master)
l 从远程服务器拉取版本(git pull)
最好的方式,就是有一个服务器(linux系统下搭建的服务器)
先在windows上面模拟协同开发。
(1).创建git裸服务器
选定一个目录,
使用git init --bare
创建如下:
repository :仓库
此时,我们的裸服务器已经创建完毕。
注意,和使用git init相比,有区别
相同点:生成的文件是相同的,除了.git目录本身。
不同点:init会生成一个.git目录,而git init --bare不会。
没有.git目录,也就意味着它不能在当前这个目录实现版本控制。
所谓的裸服务器,就是指这里只有版本库的内容,没有工作区。
所以,对于git服务器而言,所要做就是 创建好 版本库。没有其他的。
(2).从裸服务器将版本库克隆至本地
甲需要开始开发了,一开始需要将服务器上的版本库 克隆至自己的电脑。
git clone 地址
在windows下的本机上,地址直接使用 绝对目录即可。
进入git-server目录,发现已经有了.git目录,
此处,我们就不需要在本地再进行 git init的操作了。
此时,有一个说法:
创建一个版本库,至少有两种方式:
l 在本地使用 git init创建
l 在服务器上 clone 一个
对于甲而已,现在就可以 完成常规的开发。
现在所有的版本控制都是在本地进行的。
注意,如下错误:
对于其他程序员,完全可以同步这个操作的。
乙程序员来了,需要开始工作了。
有了版本库,那么乙就可以在这个目录下,进行常规开发以及本地的版本管理
.........
长时间的开发,自己本地的版本控制
........
(3).拉取和推送版本
甲将自己的最新的版本,推送至git服务器。
服务器在哪儿?
git remote
怎么推送呢?
git push origin master
此时,甲已经将其最新的版本库 推送至 git服务器。
此时,乙程序员,并不能够看到甲的工作内容。
实际上,其他同事,需要从git服务器上,拉取最新的内容才可以。
有一个网站:stackoverflow
基本上我们在开发时遇到的90%以上的,都可以在上面找到准确的答案。
在上述的几个流程中,
前面三个流程,如下:
创建一个git裸服务器 (git init --bare)
从裸服务器将版本库克隆至本地(git clone )
本地常规操作
是没有什么问题的。
其中,创建裸服务器不是由开发人员来完成。是项目负责人干的事情。它会给我们一个地址。
做为开发人员,需要 使用 git clone命令从 git服务器 克隆版本库到本地。
然后在本地进行常规的管理。
在开发完一个阶段之后,需要将本地的 版本库 推送到 git服务器。
推送的时候,要注意你的版本是最新的,还是说不说最新的。
如果是最新的,很简单,直接推送 git push origin master
如果不是最新的,需要保证你在推送之前那一刻是最新的,先从服务器拉取最新的--git pull,然后再推送 git push origin master。
但是,如果是第一次在拉取的时候,可能会出现,拉取失败的错误。加上--allow-unrelated-historeies即可。
为了确保每次推送时没有问题,一般操作就是先拉取后推送。
3.分支
(1).什么是分支
你可以创建一个属于自己的分支,别人看不见,还继续在原来的分支上工作,而你在自己的分支上进行开发,等开发完毕,合并即可。
默认情况下,git中只有一个分支 master。
Branch--分支
在当前分支上的版本控制,如图所示:
(2).分支的基本操作
l 查看当前分支 (git branch)
l 创建分支 (git branch 分支名)
l 切换分支(git checkout 分支名)
l 分支上的常规操作
l 分支的合并 (git branch master + git merge 分支名)
l 分支的删除(git branch -d 分支名)
查看当前分支
注意 *,表示如果有多个分支,当前是在哪个分支上
创建分支
切换分支
接下来,所有的git相关操作都是基于 b1 这个分支的。如
相当于:
查看b1分支的log
查看master分支的log
当在分支上,完成了这些操作。
可以将其合并到master上面去。
合并需要两步:
l 切换到主分支,git checkout master
l 在主分支上,合并其它分支,git merge 分支名
合并之后,相当于
最后,将分支删除掉
git branch -d 分支名
就相当于
六.GitHub
GitHub不是Git
Git是一个版本控制系统,是一个工具。提供了诸多的一些命令,从而完成版本的控制以及协作开发。
GitHub是一个网站,基于Git的,主要的作用就是代码托管。
托管有这么几层含义:
l 将自己平时写的项目保存到GitHub上。
l 可以作为Git服务器来使用。
第一件事情,就是注册账号。
创建版本库
现在已经有了一个版本库,
我们就可以在当前版本库中,添加文件,添加版本。
可以新建文件
在这个操作中,对应到Git操作,应该有哪几部?
第一,在项目目录下新建了一个文件
第二,将文件使用git add添加到暂存区
第三,使用git commit 提交到版本库的主分支。
作为git服务器来使用。
首先在GitHub上创建一个仓库。
然后,在本地使用 git Clone 将版本库 克隆到本地。
使用git clone命令即可。
然后,在本地进行常规开发,并进行常规的版本控制。
完成之后,需要将最新的版本库,推送到GitHub
首先要找到远程的 git服务器的名称,就是origin
使用push推送之
对于这个过程,重复操作即可。
当然,如果有多个用户同时进行协同开发,就需要注意,在push之前,需要pull一下。
总结:
Git 是什么?
是分布式版本控制系统。
分布式
版本
软件从开发的第一天,到后期的不断更新,其中每一个节点都是一个版本。
可以干什么?
对版本进行管理,便于开发的时候,更好的维护项目。
团队协作开发
常规使用
创建版本库:git init / git clone url
在本地git版本库进控制
l git add
l git commit
l git reset
l git log/git reflog
l git status
l git config
l git branch
如果在gitHub网站上创建分支,是fork
Fork的意思是叉子
作业:
l 先注册GitHub账号。
l 将自己的项目托管到GitHub上。
l 利用GitHub结合Git尝试团队开发。
接下来,就可以 在自己的简历中复制这一行:
熟练使用Git进行项目的版本控制和团队协作开发。
问:在使用Git的时候遇到什么问题没有?
版本冲突。
两种情况:
第一,在推送的时候,自己的当前版本不是最新版本,此时先拉取,再推送。
第二,如果多个程序员在编辑同一个文件,所以需要商量一下,让其中先完成,push,另一个人再拉取,修改,然后在push。
大众化简历:
精通/熟练/了解
HTML5、CSS3、jquery
遵循w3c标准/规范,注重语义化,快速进行web 页面
有良好的编码规范(注释,命名规范)
使用Git对项目进行版本控制以及团队协作开发。
对js有深入的了解,可以使用js来实现各种效果,熟悉oop。
能够使用HTML5、css3、zepto进行web app开发。熟练使用jquery mobile快速进行web app开发。
了解Angularjs
BootStrap
熟悉Node.js
熟练使用Ajax进行异步的交互。
定制建立
投其所好。
看着了哪家公司,先看人家的招聘要求。
对号入座
以上是关于git全部使用步骤的主要内容,如果未能解决你的问题,请参考以下文章
markdown 外壳脚本实现使用查找和xargs的删除隐藏的全部git的子目录
Git:放弃本地(或Linux下)修改内容,全部拉取远端git仓库代码