关闭

Git速成

标签: git
238人阅读 评论(0) 收藏 举报
分类:

Git 具体命令

点击查看文章原文

第一步,我们先新建一个文件夹,在文件夹里新建一个文件(我是用 Linux 命令去新建的,Windows用户可以自己手动新建)

mkdir test (创建文件夹test)
cd test (切换到test目录)
touch a.md (新建a.md文件)

这里提醒下:在进行任何 Git 操作之前,都要先切换到 Git 仓库目录,也就是先要先切换到项目的文件夹目录下。

这个时候我们先随便操作一个命令,比如 git status ,可以看到如下提示(别纠结颜色之类的,配置与主题不一样而已):

这里写图片描述

意思就是当前目录还不是一个 Git 仓库。

git init
这个时候用到了第一个命令,代表初始化 git 仓库,输入 git init 之后会提示:
这里写图片描述

可以看到初始化成了,至此 test 目录已经是一个 git 仓库了。

git status
紧接着我们输入 git status 命令,会有如下提示:
这里写图片描述

默认就直接在 master 分支,关于分支的概念后面会提,这时最主要的是提示 a.md 文件 Untracked files ,就是说 a.md 这个文件还没有被跟踪,还没有提交在 git 仓库里呢,而且提示你可以使用 git add 去操作你想要提交的文件。

git status 这个命令顾名思义就是查看状态,这个命令可以算是使用最频繁的一个命令了,建议大家没事就输入下这个命令,来查看你当前 git 仓库的一些状态。

git add
上面提示 a.md 文件还没有提交到 git 仓库里,这个时候我们可以随便编辑下 a.md 文件,然后输入 git add a.md ,然后再输入 git status :

这里写图片描述

此时提示以下文件 Changes to be committed , 意思就是 a.md 文件等待被提交,当然你可以使用 git rm –cached 这个命令去移除这个缓存。

git commit
接着我们输入 git commit -m ‘first commit’ ,这个命令什么意思呢? commit 是提交的意思,-m 代表是提交信息,执行了以上命令代表我们已经正式进行了第一次提交。

这个时候再输入 git status ,会提示 nothing to commit。

git log
这个时候我们输入 git log 命令,会看到如下:

这里写图片描述

git log 命令可以查看所有产生的 commit 记录,所以可以看到已经产生了一条 commit 记录,而提交时候的附带信息叫 ‘first commit’ 。

git add & git commit
看到这里估计很多人会有疑问,我想要提交直接进行 commit 不就行了么,为什么先要再 add 一次呢?首先 git add 是先把改动添加到一个「暂存区」,你可以理解成是一个缓存区域,临时保存你的改动,而 git commit 才是最后真正的提交。这样做的好处就是防止误提交,当然也有办法把这两步合并成一步,不过后面再介绍,建议新手先按部就班的一步步来。

git branch
branch 即分支的意思,分支的概念很重要,尤其是团队协作的时候,假设两个人都在做同一个项目,这个时候分支就是保证两人能协同合作的最大利器了。举个例子,A, B俩人都在做同一个项目,但是不同的模块,这个时候A新建了一个分支叫a, B新建了一个分支叫b,这样A、B做的所有代码改动都各自在各自的分支,互不影响,等到俩人都把各自的模块都做完了,最后再统一把分支合并起来。

执行 git init 初始化git仓库之后会默认生成一个主分支 master ,也是你所在的默认分支,也基本是实际开发正式环境下的分支,一般情况下 master 分支不会轻易直接在上面操作的,你们可以输入 git branch 查看下当前分支情况:

这里写图片描述

如果我们想在此基础上新建一个分支呢,很简单,执行 git branch a 就新建了一个名字叫 a 的分支,这时候分支 a 跟分支 master 是一模一样的内容,我们再输入 git branch 查看的当前分支情况:

这里写图片描述
但是可以看到 master 分支前有个 * 号,即虽然新建了一个 a 的分支,但是当前所在的分支还是在 master 上,如果我们想在 a 分支上进行开发,首先要先切换到 a 分支上才行,所以下一步要切换分支

git checkout a

执行这个命令,然后再输入 git branch 查看下分支情况:

这里写图片描述

可以看到当前我们在的分支已经是a了,这个时候 A 同学就可以尽情的在他新建的a分支去进行代码改动了。

那有人就说了,我要先新建再切换,未免有点麻烦,有没有一步到位的,聪明:

git checkout -b a

这个命令的意思就是新建一个a分支,并且自动切换到a分支。

git merge
A同学在a分支代码写的不亦乐乎,终于他的功能完工了,并且测试也都ok了,准备要上线了,这个时候就需要把他的代码合并到主分支master上来,然后发布。git merge 就是合并分支用到的命令,针对这个情况,需要先做两步,第一步是切换到 master 分支,如果你已经在了就不用切换了,第二步执行 git merge a ,意思就是把a分支的代码合并过来,不出意外,这个时候a分支的代码就顺利合并到 master 分支来了。为什么说不出意外呢?因为这个时候可能会有冲突而合并失败,留个包袱,这个到后面进阶的时候再讲。

git branch -d
有新建分支,那肯定有删除分支,假如这个分支新建错了,或者a分支的代码已经顺利合并到 master 分支来了,那么a分支没用了,需要删除,这个时候执行 git branch -d a 就可以把a分支删除了。

git branch -D
有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,你执行 git branch -d a 是删除不了的,它会智能的提示你a分支还有未合并的代码,但是如果你非要删除,那就执行 git branch -D a 就可以强制删除a分支。

git tag
我们在客户端开发的时候经常有版本的概念,比如v1.0、v1.1之类的,不同的版本肯定对应不同的代码,所以我一般要给我们的代码加上标签,这样假设v1.1版本出了一个新bug,但是又不晓得v1.0是不是有这个bug,有了标签就可以顺利切换到v1.0的代码,重新打个包测试了。

所以如果想要新建一个标签很简单,比如 git tag v1.0 就代表我在当前代码状态下新建了一个v1.0的标签,输入 git tag 可以查看历史 tag 记录。

这里写图片描述

可以看到我新建了两个标签 v1.0、v1.1。

想要切换到某个tag怎么办?也很简单,执行 git checkout v1.0 ,这样就顺利的切换到 v1.0 tag的代码状态了。

OK,以上全是一些最基本的Git操作,而且全是在本地环境进行操作的,完全没有涉及到远程仓库。

0
0
查看评论

C编译: makefile基础

在编译一个大型项目的时候,往往有很多目标文件、库文件、头文件以及最终的可执行文件。不同的文件之间存在依赖关系(dependency)。比如当我们使用下面命令编译时:$gcc -c -o test.o test.c$gcc -o helloworld test.o可执行文件helloworld依赖于t...
  • e421083458
  • e421083458
  • 2016-03-29 11:51
  • 781

javascript语言速成

因为是个轻量级语言.把他所有要点写成一篇文章也应该
  • skyjie6
  • skyjie6
  • 2014-08-18 13:51
  • 1494

Java两个月速成(1)——随便玩玩

距离我上次下决心学Java已经过去一整个学期了-- 这次暑假是真的要搞定Java了,于是又从图书馆借来了《Java语言程序设计-基础篇》,一本很经典的Java教程,趁着比较轻松的实习(其实是挂职锻炼),啃一啃Java。 在这个博客做笔记,也算是两个月速成Java的一个记录吧。 已经大二结束了,...
  • u013806398
  • u013806398
  • 2014-07-08 09:26
  • 1114

C++速成(3)

转载自: http://www.cnblogs.com/kkdd-2013/p/5370094.htmlC模版35h 1 友元函数和友元类 2 友元函数 友元全局函数 友元成员函数 3 友元函数代码实践 4 友元类 5 友元类代码实践 6 static 7 静态代码实践 8 运算符重载 一元运算...
  • github_36326955
  • github_36326955
  • 2017-11-07 08:39
  • 195

Visual Studio 2008 Express Editions(速成版)中文版

在网上看到Visual Studio 2008 Express Editions中文版,觉得还不错,就分享给大家了!不过DVD的ISO镜像文件的大达到了3.21G,VS2008Express英文版的DVD镜像大小仅894M,不过下载速度不错,我下完了。微软在其中集成了完整的MSDN,有兴趣的朋友下载...
  • troymny
  • troymny
  • 2010-01-07 10:43
  • 1245

iOS 开发一周速成 -- 项目实战中常用API

音量调节: [[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0f]; //最小音量 [[MPMusicPlayerController applicationMusicPlayer] setVolume:1.0f]...
  • sea918
  • sea918
  • 2012-08-14 09:59
  • 3462

AngularJS 学习笔记-第一章:速成

本文章是针对于刚开始学习angularJS的菜鸟们,根据(精通angularJS一书)做的精简版读书笔记, 旨在通过笔记让更多的前端开发,在一周之内可以入门AngularJS。
  • honeywell1000
  • honeywell1000
  • 2016-07-18 14:40
  • 568

ios7版 30天精通iPhone手机编程

更多精彩内容,请见:http://www.16boke.com 去年把《30天精通iPhone手机编程》这本书的例子做了一遍没有做笔记,今年用的ios7,并且是新版本的XCode,结合新的环境准备再做一遍,昨天分了mac本,里面的系统太旧了,折腾电脑的事儿,博客一直没来得及写。 第1天 ...
  • one_in_one
  • one_in_one
  • 2014-01-15 10:18
  • 7226

AI 人才培养不可能速成

AI 人才培养不可能速成 孟岩:当一个程序员在其他的领域里已经做得不错的情况下,想转型AI,他通过什么方式有没有可能快速的成才?这种成才,快速成长出来的AI技术人员,可用不可用?缺陷会是什么? 刘昕:这是我们实践当中遇到的问题。我们认为AI人才是不能速成的,所有号称速成的说法和做法最终也会伤...
  • qq_34781336
  • qq_34781336
  • 2018-01-19 23:36
  • 30

ios7版 30天精通iPhone手机编程 第2天 第一个程序“Hello”

更多精彩内容,请见:http://www.16boke.com Label(标签)控件的应用 新建一个工程,采用Single View Application模板。从库窗口拖一个Label到Main.storyboard。   (1) UIK...
  • one_in_one
  • one_in_one
  • 2014-01-15 10:30
  • 9308
    个人资料
    • 访问:85197次
    • 积分:1856
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:19篇
    • 译文:0篇
    • 评论:48条
    博客专栏
    文章分类
    最新评论
    常用链接