git入门(二):git基本命令讲解(本地库↔远程库)

前言
看git入门,请想象自己就是开发人员,正在操作一个项目的本地与远程的文件版本更新控制。


一、Git原理(why use git)

1、版本控制

(1)定义:
是一种记录一个或者若干个文件内容变化,以便将来查阅特定版本修订情况的系统(理论不好理解)

(2)用处:
情况一:项目文件中有很多文件,经过许多天后修改若干个文件,想找到之前某一天所修改的错误记录,却无从查起,这个时候便需要一个有提交文件记录(包括提交时间、提交修改内容等)的文件修改的版本控制工具来帮助你

情况二:多人协作共同管理一个拥有多个代码文件的项目,你需要有一个提交修改记录的版本控制工具去告知你的伙伴,该文件在何时何地修改了什么内容,以便伙伴了解,便于团队之间协作

2、种类

(1)本地版本控系统

(2)集中式版本控制系统(SVN)
即拥有共有的服务器,作为中心节点,pull、commit、push都集中在这台服务器上进行操作,受限于服务器不灵活性和网络问题

(3)分布式版本控制系统(Git)
哎这个不说了,累,具体操作和体验可以看之前写的《git的初尝试》:
浅谈git入门(一):git初尝试

3、Git优势

诞生于2005年,来源自linux开源社区

  • 速度很快
  • 分布式(不怕断网哈哈~)
  • 简单的设计
  • 允许上千个并行分支同时开发

二、Git的几个重要概念

1、记得之前在《git初尝试》中尝试对项目进行本地和远程库之间文件版本的操作控制。

如下图标注,终端操作,push到远程库的全过程:


image

2、仓库中的三种必备状态(重要概念):

image

(1)已暂存(staged),将已修改的文件放在下次提交(提交至本地仓库)时要保存的清单中,即暂存区里)。

(2)(添加了文件之后,)已修改(modified)某个文件,但还没有提交保存

(3)已提交(committed)该文件,已经被安全地保存在本地数据库中了

三、简单演示

1、起步

初次使用,需要设置姓名和邮箱

$ git  config --global user.name  "你的名字"
$ git  config --global user.email johndoe@example.com

2、clone一个项目

用于把一个已有的github项目clone(下载)到本地变为本地仓库

$ git clone git@github.com:jirengu/blog.git
$ cd blog

3、添加文件并提交【本地库↔远程库】

(1)创建文件

$ touch a.md

(或者直接打开本地仓库目录新建文件)

由于刚才的文件是空文件,通过一个命令在文件中写入一个字符串:
$ echo "hello" > a.md

(2)查看仓库状态

$ git status

此时,学会看命令行提示(英语单词了解一下吧orz( ̄▽ ̄)")
如提示:untracked files(未跟踪)、nothing added to commit(还没添加文件在暂存区去等待本地提交),并提示怎么做:(use "git add" to track)。如图:


image

(3)把当前文件夹下的新增和删除全部放在暂存区

$ git add .
再次查看:
$ git status

如查看提示:use "git reset HEAD <file>..." to unstage,即可以将文件从暂存区拿出来。

(4)把暂存区的更新提交到本地库

$ git commit -am "add file"

关于-am "add file"中的-am可以看一下份资料:
git commit -m 与 git commit -am 的区别​git commit -m 与 git commit -am 的区别

而-am "add file"即说明文件以什么修改状态(如修改?添加资料?)即被跟踪暂存等待本地提交。

再次查看
$ git status

提示push

推送本地仓库
$ git push origin master
image

4、修改、删除文件【远程库↔本地库】

(1)把远程库拉下合并(merge)到本地仓库

$ git pull

(2)

修改文件
$ vim a.md

删除文件
$ rm -rf a.md
$ git add .

(3)#添加文件至暂存区

$ git add  .

(4)#提交至本地库

$ git commit -am "字符串"

注:这里需要注意的是如果提交消息包含大量字符串,提交参数不用加m

(5)#推送远程库

$ git push origin master

5、多人协作

(1)有一人在远程修改文件,你不知道仍继续在终端修改提交文件

$ touch b.md
$ git add .
$ git commit -am "add b"
$ git push

终端修改,出现拒绝的报错,如:


图片

(3)这个报错说明终端push远程文件失败。即在远程库的一些已修改的文件没有更新到本地,本地文件夹里没有相应的更新,你需要在本地终端同步更新远程库所更新过的文件。

(4)被多人协作过的远程库拉下本地更新一下,即执行:

$ git pull

自动将更新后的远程库拉回来,并merge(合并)你所更新的文件,进入一个vim编辑器,编辑需要更新的文件

$ vim b.md

你要怎么样都可以,不想干嘛就保存退出,不再说vim的使用方法了。赶紧看下一步:

$ git add .
$ git commit -am "merge"
$ git push

结论:
每一次在本地库完成自己的文件更新,都需要git pull一下,让远程库在本地与你的文件合并(merge),在推送(push)

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

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,848评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,897评论 0 11
  • 时间的脚步 永不驻足, 每一步都丈量着过往。 时光途经青春, 步伐匆匆, 有遗憾和失落, 也有惊喜和感动。 时间的...
    晨总之母阅读 271评论 0 1
  • 与友人聊天,可以让自己成长! 每年我们都会去给高姐拜年,每次聊天都会有新的感受。比如说买学位房这件事情,老...
    兰欣生命之旅阅读 370评论 1 2