扫地专员带你Git入门(一)

前言

Git是什么

Git是一个代码版本管理工具

什么是代码版本管理工具

做为软件开发工作者,协同工作是必不可少的事情,代码管理工具给我们带来了许多的方便,代码合并、创建分支、日志等等。

同为版本管理工具,Git和SVN的区别是什么

  • Svn是集中化的版本控制系统,受限于服务器,比如:提交记录,如果我离线的话,提交记录是看不到的。
  • Git分布式版本控制系统,在代码同步的时候所有日志在本地都会有保存,就算没有网络也可以很方便查看到各种记录。

为什么我们要使用Git

相对Svn而言,Git拥有非常灵活轻巧的分支功能,Svn的分支需要完全拷贝一份项目代码,而Git的所有分支都在同一个文件夹内,根据版本号进行回滚或返回操作。我们甚至可以为每一个任务建立一个分支,新特性就在新特性分支上,Bug修改就在Bug修改的分支上开发完成后合并到主分支就好。下面我们就开始吧!

一、Git的安装

  1. Windows系统 Git官方下载地址
  2. Linux系统(主要以centOS、ubuntu为例)
// centOS
yum install git-core
// ubuntu
apt-get install git
  1. MacOS(其实现在MacOS自带Git,安装就不多做介绍了)

二、创建版本库

  1. 新建一个目录。这里我们创建一个learngit目录。
  2. 通过命令把这个目录变成Git可管理的仓库
git init
Initialized empty Git repository in /Desktop/learngit/.git/
  1. 命令输入后Git会自动帮我们生成第一个主分支master,在未做分支操作时,我们所有的代码都将提交到这个主分支上。

三、代码提交

  1. 首先针对新创建文件。必须要先使用add告诉仓库,这是新创建的,否则提交代码时仓库会检查不到仓库内有该文件的缓存。忽略这个文件的变更提交。
// 新增单个文件可以使用
git add xxx.js
// 当你这次创建了多个文件想一并添加到仓库缓存区时可以使用
git add .
// 当你是使用windows提交代码的时候.也许会出现这个错误提示。
warning: LF will be replaced by CRLF in index.html.
The file will have its original line endings in your working directory.
// 主要是因为windows中的换行符为 CRLF, 而在linux下的换行符为LF,
// 导致的错误,在当前目录下输入以下命令可以解决这个问题
git config core.autocrlf false
  1. 仓库状态查看,这个命令可以查看当前仓库下有哪些文件发生了变动。
git status
  1. 下面就可以开始提交代码了。
git commit -m "first commit" // 引号内为备注信息,方便以后查看日志
// 如果你是第一次提交代码Git会提示
*** Please tell me who you are.
// 代码提交时Git为你的每一个提交都记录你的名字与电子邮箱地址,
// 所以第一步需要配置用户名和邮箱地址。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
// 设置完成后,就可以进行代码提交了

四、版本回退

当我们提交完代码后再次进行开发调整,最后发现并没有当初调整前的理想,又没办法撤回到最初调整时的样子,这时候我们就可以利用版本回退这个功能让你的代码回退到你某次代码提交时的状态。

  1. 首先我们需要查看提交日志
git log
commit 04fcb4ecb384463b17efffae036b73afa5c8969c (HEAD -> master)
Author: xxxx <xxxx@xxxx.com>
Date:   Sat Dec 9 16:07:37 2017 +0800

    first conmit
// 可以查看到以往的提交记录列表以及对应提交的hash值
git reset --hard HEAD^
// HEAD代表当前版本,^代表往前回退1个版本 ^^代表2个 更多也可以使用~

五、撤消修改与删除文件

  1. 撤消修改
git checkout -- xxxx.xxxx
// 这个命令直接可以让文件回到commit时的状态。
// 切记 -- 是必须的。如果没有 -- 这个命令将是另外一个功能
  1. 删除文件
git rm xxx.xxx
// 当你本地文件删除后,其实在仓库里依然还保存着。执行这个命令把仓库里的也删掉

六、分支

分支是Git的核心,在实际开发中,也许这一版的任务刚提测,下一版的开发任务就来了。这时候,我们可以创建一个新的分支进行下一版任务的开发,这一版测试提bug的时候我们就可以把分支切换回去改bug,不会影响下一版本的代码。

  1. 查看分支
git branch
* master
// 当前我们就只有一个分支
  1. 创建分支
git branch dev
git branch
  dev
* master
// 创建一个分支,但是指针依然指向原来的分支
git checkout dev
Switched to branch 'dev'
// 需要切换到新分支上
git branch
* dev
  master
// 当然也可以一步到位
git checkout -b dev
// 这样可以直接创建并切换到dev分支上
  1. 合并分支

当我们在发现之前版本的bug需要解决的时候,通常会新建一个临时的分支来解决bug,以免直接在原有代码上直接修改不好恢复代码,在解决完bug之后再跟原有分支进行合并。

// 先切换回原分支后就可以进行合并分支了
git merge dev
// 分支合并完成后就可以把临时分支删除了
git branch -d dev
// 这样就只剩下master分支了
  1. 代码冲突

在多人协作开发时,经常出现冲突的就是在多个人同时对一个公共组件进行了修改,在提交代码后Git会自动检测同个文件是否在同个区域进行了不同的操作。这时候Git就无法进行快速合并,需要手动的解决冲突后才可以进行合并操作。

七、远程仓库

常见的国外开源仓库github、国内的码云、码市、但是一般公司都会有自己内部的gitlab服务器,让大家的代码进行统一的管理

  1. 代码克隆,一般新进公司,公司都会为你建立好帐号密码,登陆到指定的地方去拉取正在进行开发的项目代码文件,每个项目都会有他的一个git地址。
git clong 项目地址
// 这样我们就可以把一个远程仓库上的代码复制到我们本地
  1. 代码拉取&&代码推送,代码推送会把你的本地提交的代码推送到远程仓库内。但是必须要注意的是因为项目一般都是多人协同开发的,请在提交代码前先往远程仓库拉取一下,因为多人开发的同事如果进行了代码推送你,你没有进行拉取再推送,因为你本地的代码不是最新的有可能导致别人新推送的代码被你的老代码覆盖了。
git pull // 拉取
git push // 推送
  1. 同步本地远程分支,一般项目领导建立分支后会告诉你们切换到新分支上进行开发,但是如果你不进行远程分支同步的话,你在是看不到新建立的分支的。
git fetch
// 执行完这个命令后再查询所有分支就可以见到新的分支了
git branch -a
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342