git精简教程

一,本地仓库

1.安装

在macOS 上安装Git

两种方法:一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/

第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode默认已经集成了Git。对于做苹果系统开发的同学这步就可以直接跳过,因为Xcode是标配。

Xcode是Apple官方IDE,功能非常强大,是开发Mac和iOS App的必选装备,而且是免费的!

2.配置

安装完成后,还需要最后一步设置,在命令行输入:

$git config --global user.name"Your Name"

$git config --global user.email"email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

3.初始化及第一次提交

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;

$git add file1.txt

$git add file2.txt file3.txt

$git commit -m"add 3 files."

第二步,使用命令git commit,完成。

4.提交更改

git status命令可以让我们时刻掌握仓库当前的状态。

git diff这个命令可以查看修改的内容。

5.查看历史提交记录并回退

版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看。

git log命令显示从最近到最远的提交日志。

加上--pretty=oneline参数可以让历史记录只显示一行,凸显提交时留下的信息。

现在,我们要把当前版本回退到上一个版本,就可以使用git reset命令:

$ git reset--hard HEAD^

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

6.撤销向工作区或者版本库的提交

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

7.删除文件

$ git rm 命令可以在工作区删除文件并同步到暂存区,确认删除后用git commit 命令提交到版本库。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

二,远程仓库

1.在gitHub上创建一个远程仓库并关联到你的本地仓库上

登陆gitHub找到create a new repo,填写项目名称和描述,创建成功

回到命令窗,

git remote add origin https://github.com/yourAccount/yourRepo.git

git push -u origin master

push 命令之后会让你更输入用户名和密码,注意密码输入是不可见的,不要以为是电脑坏了

文件不大的话很快就上传完了,刷新你在gitHub刚才新建的项目页面,本地文件已经躺在列表里了。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

从现在起,只要本地作了提交,就可以通过命令:

$git push origin master 提交了。

2.克隆一个远程仓库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

$git clone git@github.com:yourAccount/yourRepo.git

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

3.使用分支

首先创建一个分支,然后切换到该分支下:

$git checkout -b 分支名

上面的命令和这两条命令功能一样

$git branch 分支名

$git checkout 分支名

注意,checkout 命令加 --文件名 表示恢复工作区,直接使用表示切换分支

用git branch命令查看当前分支:

$git branch

当你在dev分支开发完后切换回master分支,你需要合并dev分支的内容到master上,使用git merge  **命令 ,进而你需要删除分支:git branch -d **

当合并时出现冲突,可以用git status 查看冲突的文件,手动解决冲突后git add后再git commit 提交至版本库

用git log --graph命令可以看到分支合并图。

4.分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

5.暂存分支

有时候你正在攻克一个难题,这时候来了一个优先级更高的事件,你需要放下手中工作去处理这个事件。

Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。

用git stash list命令查看之前保存的工作现场,可以多次存储。

需要恢复的时候,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了,pop恢复的是最近的一次保存的内容。

6.删除分支

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D ** 强行删除。

7.查看远程库信息
要查看远程库的信息,用git remote命令,如果加上 -v 选项可以显示详细信息。

详细信息中会有push路径和pull路径,如果只有pull路径,说明你没有推送权限,只能拉取代码。

8.使用标签

创建标签:

命令git tag  tagName 就可以打一个新标签,默认这个标签是打在最新的提交版本上。

我们可以使用git tag这个命令来查看当前分之所有的标签。

给之前提交的历史版本打标签可以使用git tag tagName commitID 这样的命令格式。

使用git show tagName 可以显示该标签的详细信息。

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

$git tag -a v0.1 -m "version 0.1 released" 3628164

标签推送到远程:

如果要推送某个标签到远程,使用命令git push origin tagName

或者,一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags

删除标签:

如果标签打错了,也可以删除:

$git tag -d v0.1

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$git tag -d v0.9

然后,从远程删除。删除命令也是push,但是格式如下:

$git push origin:refs/tags/v0.9

以上呢就是一些常用的git操作,对于普通用户,基本上已经可以满足你在开发中的大部分需要,如果你想要使用更多的功能,访问git的官网吧,https://git-scm.com/。

本教程部分内容来自网络,原作者拥有最终版权。如果内容侵权请联系我删除。

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

推荐阅读更多精彩内容