设为首页 收藏本站
查看: 640|回复: 0

[经验分享] git全部使用步骤

[复制链接]

尚未签到

发表于 2018-1-12 23:10:57 | 显示全部楼层 |阅读模式
今天要讲的内容:项目管理和工具

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
  此时,就回到了第二个版本的初始状态。
  要注意,此时第三和第四个版本的文件,虽然已经不在工作区,但是它还保存在版本库中。所以可以随时再回退。
  比如,我需要回到第三个版本。
  注意,这个是相当于回到当前版本的未来版本。使用gitlog 只能查看当前版本之前的所有版本。
  如何获取所有版本的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%以上的,都可以在上面找到准确的答案。
  http://stackoverflow.com/
  在上述的几个流程中,
  前面三个流程,如下:
  创建一个git裸服务器(git init --bare)
  从裸服务器将版本库克隆至本地(git clone)
  本地常规操作
  是没有什么问题的。
  其中,创建裸服务器不是由开发人员来完成。是项目负责人干的事情。它会给我们一个地址。
  做为开发人员,需要 使用 git clone命令从 git服务器克隆版本库到本地。
  然后在本地进行常规的管理。
  在开发完一个阶段之后,需要将本地的 版本库 推送到 git服务器。
  推送的时候,要注意你的版本是最新的,还是说不说最新的。
  如果是最新的,很简单,直接推送  git push origin master
  如果不是最新的,需要保证你在推送之前那一刻是最新的,先从服务器拉取最新的--git pull,然后再推送 git pushorigin 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服务器来使用。



网址:https://github.com/


第一件事情,就是注册账号。




创建版本库





现在已经有了一个版本库,

我们就可以在当前版本库中,添加文件,添加版本。





可以新建文件






在这个操作中,对应到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进行异步的交互。


定制建立

投其所好。

看着了哪家公司,先看人家的招聘要求。

对号入座
























运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434457-1-1.html 上篇帖子: 使用git上传项目到github 下篇帖子: Git下载、更新、提交使用总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表