新手必知的几个常用git命令

git常用命令

git使用命令在网上教程一搜一大把,问题就是实在是太多教程了,加上命令本身功能强大,各种操作容易让人迷失自我,对初学者反而增加了难度。

本文总结了几个在日常生活中最常用的命令,建议了初学者可以优先搞定这部分,就够你80%的日常需求了,之后再慢慢增加知识储备,逐渐提升。

废话不多说,开始学习!

git init

git init是最最最基础的命令了,把你的某个文件夹初始化成一个git项目。命令简单不多说,只是在你git init之前,这有个小建议:记得在你的项目目录下添加上.gitignore文件,该文件会忽略你指定的文件或文件夹被添加到git中,比如你的账号密码配置文件,ide工程辅助文件等。尽早添加.gitignore文件能省去之后好多事~

git status

该命令查看你当前git项目的状态,仔细查看输出,可以看到哪些文件已经被放到暂存区(index)了,哪些还只是停留在工作区(working directory)。为了说明暂存区和工作区的区别,这里打个比方:

小时候打小游戏闯关,一共有100层,每层都有5个boss。为了防止没命了重来,在每一层打过了一个boss就会选择存档一下,以便死了可以重来。这一层5个boss都打了,游戏会自动给你存档一下,说明这一层过了进入下一层。

在这个例子中,你一直在玩的界面,就可以理解为工作区(working directory);你打完每个boss手动存档一下,就是对应着将当前的所有东西用git add存到了暂存区(index);最后打完了一层的5个boss,系统自动存档,就相当于git commit添加到了仓库。

git add

在项目文件夹下对你的文件进行修改,修改完后在项目的根目录下输入git add . 就可以把刚才的内容都存到暂存区啦,是不是挺简单~,提一下,别忘了最后的.,它代表当前整个目录,所以要在项目的根目录下面执行该命令。

git commit之前可以多次调用git add往暂存区,等攒个大的再用git commit提交到仓库里面去。

git commit

git commit -m '备注信息' 将累计存在暂存区内的数据一次性提交到仓库,同时清空暂存区的内容。然后,你用git log就能看到最新提交的commit了。


好了,到现在为止,如果你只需要一个分支,且仅在本地使用git仓库,那么上面的4个命令也勉强够用了,下面谈谈多个分支,以及远程分支等概念,毕竟还是得放到github上给众人炫耀一把。

git checkout

git checkout命令算是比较复杂的命令了,因为它有好多参数,也能实现很多功能。这里介绍两个常用的。

  • 切换到已有分支,或者切换到一个全新的分支

  • 从暂存区恢复文件到工作区

第一个功能是切换分支。假设你刚学会git init,创建的仓库默认是master分支。这时你可以利用git checkout -b dev分支新建一个分支,名字叫dev,名字可以自己取。该命令中-b代表新建一个分支。如果没有-b选项,则切换到已有的分支,例如在dev分支下面调用git checkout master则会切换回已经存在的master分支。

另一个功能是从暂存区恢复文件到工作区。如果你之前用git add命令添加工作区文件到暂存区过,就能够用git checkout -- file1 恢复文件到工作区,该命令小心点用,因为你的工作区文件会被覆盖。命令中有--这个参数,其实就是告诉计算机用该命令恢复文件。试想一下,没有--的话,git checkout file1到底是把file1当做文件名称呢还是分支名称呢,计算机是不好区分的。

git push

git push用来把本地仓库推送到远程仓库。远程仓库往往就是github或gitee等平台咯。推送到远程仓库前,第一次还需要用git remote等设置远程仓库的信息,不过一般我的做法是,在github上新建个仓库(注意要新建空白的仓库不要添加readme等文件),然后网站会自动把你需要配置的信息以命令的形式给你,你只需要复制粘贴就行啦。

这里记录个小知识点,git push 命令往往会加-u选项,这个选项是把你本地的分支和远程的分支建立关联关系,这个关系有什么用呢?最常见的就是未来在你git pull拉取远程分支的时候,系统会自动把远程的分支合并到你本地分支当中。如果git push的时候不设置-u选项,那么本地分支和远程分支不建立关联,等你要合并远程分支的时候,就需要git fetch获取分支,然后手动git merge合并分支,多了步操作。

git fetch

该命令就是从远程仓库获取指定的分支。git fetch origin master 就会从远程仓库下载master分支到本地,以origin/master名称存储在本地。注意,一般从远程fetch回来的分支,我们不对它进行改动,只是读取它或者基于它创建新的分支再修改(利用git merge或者git rebase等命令基于远程分支进行操作)。

git merge

该命令就是合并分支啦。切换到你想要合并的分支,然后调用git merge xxx就能把xxx分支合并到当前所在分支了。

如果合并的时候冲突了,就得手动去解决冲突问题,解决好后再用git addgit commit命令提交一个新的commit到仓库。


OK,差不多把部分常用的git命令讲完啦,废话比较多,写的也粗糙,只是希望大家有这么个概念,也便于之后学习过程中有个印象。毕竟都是基础的命令,算是git的必知必会了。

最后再多一句嘴,很多IDE已经有了很不错的git可视化界面了,成功避免了咱们新手噼里啪啦一顿操作最后还出错的尴尬处境,了解了最基础的git命令后,就去拥抱可视化的版本控制界面吧,提高生产效率才是程序员的第一要义_

祝大家早日搞定git,成为新一代研发大神~

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