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

[经验分享] Git使用初步

[复制链接]

尚未签到

发表于 2018-1-15 07:48:07 | 显示全部楼层 |阅读模式
  1.什么是版本控制
版本控制(Revision control),也叫版本管理,是一种软件工程技巧,藉以在开发的过程中,确保由不同人所编辑的同一档案都能得到更新,大大方便了多人协作完成同一个工程。版本控制通过文档控制(documentation control)记录工程中每一个模块的改动,并为每次改动编上序号,以此可以方便的查询或者是恢复到以前版本。 2.为什么需要版本控制?没有版本管理工具的协助,在开发中我们经常会遇到下面的问题:a.无法跟踪文件改动。有人删除或者添加了一个文件时,你很难发现;这种情况也会发现在我们自己身上,有时候误删的事也会有。或者还会有不小心的覆盖等。b.解决代码冲突困难。大家同时修改一个公共文件时,解决冲突也是个很头疼的问题。最原始方法是手动打开冲突文件,逐行比较,再手工粘帖复制。c.参考a,b。此外,还有一个很有诱惑里的用法,你可以一会儿在笔记本上改,一会儿在台式机上改,不用担心,操作的都是同一个文件。有点像云服务,不过不同计算机间同步在分布式的版本控制系统上实现更方便。 3.版本控制系统的发展历史a.最原始的方法是为不同的版本新建一个文件夹。ok,亲身经历过不小心把整个文件夹shift+delete的悲剧。后来有种流行的东西叫rcs,通过记录文件的改动来达到版本控制的目的,俺没用过。b.集中式版本控制系统。如著名的CVS,SVN等,抱歉,我也就知道这两个。故名思议,集中式版本管理系统就是有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这个服务器,取出最新的文件,修改,上传。当然,如果服务器罢工了,大家可以坐下来喝喝茶聊聊天。c.分布式管理系统。可以简单理解为人人都是服务器,其中代表就是我们即将要使用的Git。和SVN的最显著区别是,Git不只是从服务器取最新版本的文件快照,而是把原始的代码仓库完整复制过来。这样,可以用任意一个工作站中的镜像来还原服务器。同时,另一个好处是,两个工作站可以协同修改后再同步到服务器去。 4.常用名词解释先介绍用git来管理本地的文件。1)init----可以理解为新建一个Git管理项目。2)add----添加新的文件(文件夹)到Git项目中,如果添加文件夹,该文件夹下所有文件将被包含。同时可以使用rm,mv从git项目中删除或是重命名文件(文件夹)。3)commit----告诉Git你想要记录现在的操作,Git会保留一个当前修改过文件的快照。4)reset----如果你正在编辑的文件乱了,可以选择从前面的commit点(假设是a点)重新开始编辑,通常是选择恢复到上一个编辑点。5)check out----可以理解为在branch间切换。4)branch----唔,所谓branch,可以理解理解为两个子版本,当前版本出现了两个不同分支。5)merge----如果我正在编辑一个新版本a,有人在编辑新版本b,我们想把两个版本合成一个,就可以用merge。当然,合的过程中,有时候会检出有哪些地方不一样,询问到底要保留哪一个,需要手动处理不同的地方。事实上,这更像一个审查的过程。6)diff----找出两个文档或目录的不同,有个qq游戏叫找茬。7)revert----回卷到指定的commit。 然后开始和远处服务器的互动:1)clone----从目标服务器得到整个用Git管理项目的拷贝。2)pull----类似与SVN中的update动作,如果你N久前clone得到某项目的一份拷贝,用pull可以更新到最新版本。3)push----故名思议,把当前的这份拷贝push到服务器。 其他:1)working tree:刚check out过来,并未修改的文件。其实也就是你在对哪些文件进行操作。2)index(staging area):有修改但是还没有commit的文件,新加进来的文件也在这里。3)git directory(repository):修改并commit后,一个文件快照被推送到这里,被保存起来。 5.几个初学比较麻烦的名词1)log和status:log是查看commit的历史;而status是查看是否有文件未commit,没有的话,当前的Git project是clean的。2)reset和revert:首先,‘reset --hard’到某commit点后,用log查看,该点后所有commit都看不到了,文件被恢复到commit点时的样子;而revert到某commit点之后,用log查看,可以看到多了一个commit点,查看文件内容,被恢复到commit点。还有,必须是project clean时,才能执行revert。3)branch和master。这两个之间的关系通常也比较让人头大,master通常都是神秘的。事实上,master也是一个branch,而且默认你是从master开始工作的。但是,怎样知道自己在哪个branch呢?有个神秘变量叫HEAD,它指向的branch就是你现在正在操作的branch,你可以用checkout让HEAD指向名为a,b,c。。。d的任意branch,或者是master。 6.工具不是万能的再聪明工具也得正确使用,人才是操作主体。比如:1)如果你做的事别人都不感兴趣,那你最好多找几个开放的服务器,把你的的git项目push上去,免得哪天自己电脑罢工了欲哭无泪。2)你可以先pull下来服务器上的版本,和本地文件合并branch之后再push上去,这样貌似可以保持服务器上的文件最新。但是你push的时候,别人也可能在push。坐下来聊聊谁该听谁的吧,要不每人保持一个branch往下走?貌似不太现实,合作就没太大意义了吧。3)不仅仅是管理代码,如果你愿意,放情书和xx照什么的到Git服务器上去也可以。用途请自由发挥。 7.免费Git服务器· http://repo.or.cz/提供自由项目伺服服务,包括本文档(http://repo.or.cz/w/gitmatic.git)。· http://gitorious.org 是另一个支持 Git 的开源项目伺服器。(貌似要关了)· http://github.com 提供免费的开源项目伺服服务,包括本文档也在其中国内的也挺好用:git.oschina.net  8.基本操作
  见另一篇《git使用记录》。

运维网声明 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-435213-1-1.html 上篇帖子: 用GitBlit 和 VS GitSourceControlProvider 搭建基于 Http(s) 的 Git 工作平台 下篇帖子: 使用git将项目上传到github(最简单方法)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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