Git代码管理工具的使用及注意事项

Git是一款免费、开源的分布式 版本控制系统 ,用于敏捷高效地处理任何或小或大的项目。

这里推荐使用GIT的项目管理工具soucetree等,当然已经深入了解的可以使用git命令行直接操作。

Git初始化,一般代码仓库会自动生成。会在该仓库生成一个.git隐藏文件夹,不能修改该文件夹下的任何内容。

Git仓库分为三个区:工作区、暂存区、仓库区

工作区:日常我们编写代码的地方,一般是本地工作的目录就叫工作区。

暂存区:暂时存储的区域,在git中,代码不会直接从工作区提交到仓库区,而是需要先从工作区提交到暂存区,然后才能从暂存区推送到仓库区。暂存区的目的是避免误操作。

仓库区:一般是远程仓库(如GitHub、码云-开源中国等,远程仓库本质本地仓库拓展而成的,所以也可以自己搭建),也有少部分是本地仓库。将保存在暂存区域的内容推送存储到 Git 仓库中,同时生成版本号可以在版本节点添加标签备注信息。对于仓库的版本节点我们可以任意切回滚到指定节点的代码状态。

Git的常见操作:

克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库 

标签:仓库中每个节点的备注信息,一个分支可以有多个标签。

文件忽视:忽视某个文件的修改,往往用于配置文件,一般在仓库的根目录下的.gitignore中,改文件中存储忽视文件的路径(文件的修改不会被添加,文件未被删除)。

丢弃:本地文件中修改(添加)的东西会删除,注意不是文件 。

移除:直接删除本地文件。(可以通过拉取获得git服务上的该文件) 

提交:把修改的内容提交到暂存区,暂存区内在下一次推送前可进行多次提交,每次提交都需要附加一个标签信息,以区别或者记录这次提交的内容。

添加(add):添加文件到缓存区 

暂存(git stash):保存工作现场 

拉取:把仓库中所在节点分支的最新信息拉取到暂存区

推送:把暂存区的内容推送到所在的节点分支,并成为该节点分支的最新节点。

回滚:回滚一次提交。

分支(branch):创建/修改/删除分枝 

检出(checkout):切换不同分支 

变基:在有同一父节点的分支基础上,将提交到某一分支上的所有修改都移至另一分支上,并在当前分支上创建一个新的下一次的节点。

查看历史:查看仓库的分支节点的提交信息。

工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝 

Git分支的使用和说明

举个分支使用例子。假如你有一项任务。给你2箱水,一箱可乐和一箱雪碧,现在你需要把这2箱水搬到地点B并放入仓库记录。但是一个人只能搬动一箱水。那我们就可以指派一个人搬雪碧到地点B,列为分支①;指派另外一个人搬可乐到地点A,列为分支②。在他们搬的过程可能有很多种,可能会耗时、或者磕磕绊绊、又或者绕路等等,当最终2个人都把水搬到地点B的时候,这2个人的任务就结束了,我们需要搬到可乐和雪碧放入仓库记录完成最终结果,这就相当于分支操作中我们把分支①和分支②的结果合并了。

从上面的举例可以看出。分支的好处在于,当我们有一个多任务并发进行的需求时或者多人合作开发时,可以使这些任务或者开发者互不干扰的进行各自的工作,达到最终的目的后再合并各自的结果,从而达到最终目的。当然这里讲的比较简单,合并过程中可能会出现的一些不可避免的如代码冲突等,这些是需要人为解决的。

一般我们会把分支分为主分支和其他分支。其他分支上的任务最终使用会合操作合并并到主分支上。在平时的开发使用过程中,我们需要了解到自己所处的分支属于哪个分支,任务目的是什么,避免分支过多引起的误操作。

单一分支的使用和说明

上面我们说了多分支的情况,现在我们来讲一下单一分支的操作和使用。在实际的开发使用中我们常常也会遇到这样的需求。同一项任务几个人一起开发,因为周期过短,内容也比较简单,这个时候我们再使用分支的话就会比较繁琐。因为如果遇到一个任务我们就使用分支的话,会使整个项目到处都充满分支,看起来比较乱,维护和迭代也会比较慢。所以大多数的情况下我们也会在单一分支上操作。

在单一分支上多个开发者怎么同时操作呢。除了之前的提交和推送,我们引入拉取这个操作。同样我们举个例子。我们把每个开发者看做在同一个公司的会计。当一个会计完成了手中的财务工作过后,我们需要重新核对整理公司的账目,这个时候我们在提交自己工作之前,就需要拉取更新实时的公司账目信息,看时候跟你做这项工作之前一致,如果不一致,我们就需要拉取最新的公司账目信息,并整理核对自己提交的这项工作到最新的公司账目信息中,其中可能会有修改可能也没有。整理完之后我们在最终推送到公司账目信息中。

这里操作可以简单的分为以下几步:提交(完成你的工作)→拉取(获得项目的最新信息和状态)→合并(把你完成的工作合并到项目的最新信息和状态中)→推送(把你合并后的最新项目信息更新到仓库中,此时你更新的节点就是你所处分支的最新节点)。

切换分支和删除分支。

切换分支,由于项目需求我们常常可能会遇到在某个已经迭代的版本上增加新的需求迭代,这个时候我们就需要切换到那个分支上再进行操作。注意我们在切换到任意分支之前,我们需要保证自己所处分支的修改内容已经提交到仓库中,否则一旦切换过去,你之前的修改内容将不会再有保存。这里可以把切换分支看成是一种覆盖的表现。

删除分支,删除分支的时候需要区别删除本地分支和远程分支,一旦删除,将清除分支节点的所有信息。一般很少会有删除分支操作。如果一个分支被废弃时,我们需要删除分支,在彻底删除一个分支时,需要三个步骤删除①本地分支②删除远程分支③删除本地追踪分支。如果执行了①②③,那么删除的分支就不可恢复了。删除本地可以通过远程恢复本地,删除远程可以通过本地恢复远程。

Git回滚和重置

所处状态的基本定义

HEAD(头)

HEAD 是当前分支引用的指针,它总是指向该分支上的最后一次提交。 这表示 HEAD 将是下一次提交的父结点。 通常,理解 HEAD 的最简方式,就是将它看做 你的上一次提交 的快照,可以看做是一个提交节点。远程仓库就是这些节点连成的。

Index  (索引)

也可以被认为是staging area(暂存区),是一堆将在下一次commit中提交的文件,提交之后,它就是HEAD的父节点(git add添加的文件)

working copy (工作副本)

当前工作目录下的文件(一般指,有修改,没有git add,没有git commit的文件)

回滚提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容

重置是把HEAD向后移动了一下,即版本退回。重置有一下几个操作。

git reset hard(强行合并):此次提交之后的修改不做任何保留,干净的工作区。

git reset soft(软合并): 此次提交之后的修改会被退回到暂存区。

git reset mixed(混合合并):此次提交之后的修改会被退回到未暂存区。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 今天是失业的第四天,终于有时间来写点东西了,有的同学可能对于代码管理工具不是很了解,今天先来给大家讲下git的用法...
    艺术家吴老师阅读 1,731评论 0 0
  • 这篇博文是自己在学习git过程中的思考总结。本文仅仅代表个人的看法,如有不妥地方还请本文文末留言。 😊 原文链接g...
    Ming_Hu阅读 1,065评论 4 18
  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,423评论 0 3
  • 安装Git Git的下载地址:Git官网下载地址 Git本地仓库和命令 配置用户 下载完Git后,右键会有一个Gi...
    TokyoZ阅读 4,497评论 1 7
  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 1,928评论 1 8