想必大家都听说过且用过Github(没听说过-.-),我也一直用Github管理我的代码到现在,如果你只是将其作为自己私有的代码仓库,那么平时用得最多的就是git clone, git add以及git commit命令了。自己私人用用还好,但是,涉及与他人合作开发项目时,这些命令就远远不够了。

所以,该篇博客将从三个方面深入浅出地讲解git的常用命令:

1、创建并克隆远程库;

2、修改并保存到本地版本库 && 保持本地库与远程库同步;

3、分支管理(仅列出常用命令)

当然,以上前提是,在你电脑上已经安装了Git。如果还没有安装,那么请根据你的电脑系统,采用正确的方式安装Git:

--Windows--

如果你的电脑是Windows操作系统,那么请狠狠点击这儿,来下载安装msysgit(按默认选项安装即可),俺当年就是这么在windows系统上安装git的。

安装完成后,点击鼠标邮件,会出现'Git Bash'的选项,那么恭喜你就安装成功啦,以后需要输入git命令,进入Git Bash就可以敲击相应的git命令了。

--Mac OS X--

如果你的电脑是Mac,那么可以通过homebrew来安装Git,草鸡简单,详情请狠狠点击这儿,俺现在就是这么安装的,且,以下演练都是在Mac电脑上操作的,不过Windows平台的兄弟姐妹们也不必担心,命令都一样,so,跟着来妥妥滴。

一、创建并克隆远程库

众所周知,Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。大概做法就是,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。我们完全可以从无到有地搭建一个Git服务器,但是暂时没有必要,因为有Github嘛,它的作用就是提供Git仓库托管服务的,so,如果你还没有Github去组册一个吧here

提示:注册完了以后,建议采用ssh协议,虽然Git也支持https协议,但是https最大的麻烦就是每次推送都必须输入口令-。-!!!,在接下来的演示中都将会采取ssh协议。对于ssh是什么以及如何配置到Github上,请狠狠戳击这儿

好了,废话不多说,让我们切入正题。

现在假设以我的Github为例。

首先,我们在Github上新建一个名为learnGit的远程库,如下操作:

如上,当我们配置完这个远程库信息,点击'Create repository'后,learnGit远程库就搭建好了。是的,就是这么简单。

远程库创建完成后,我们就可以通过git clone命令克隆一个本地库了。

如,我们在Document路径下,通过git clone命令克隆learnGit远程库(默认采用SSH协议):

克隆完成后,那么就会在我们本地生成一个learnGit的本地版本库,且clone命令不仅仅是将learnGit远程库的代码克隆到本地,而且还会将这个时刻的所有分支信息链接到本地,通过git branch命令,可以查看本地所有分支信息,如下:

因为目前我们的远程learnGit库只有一个主分支master,故只显示master分支,*号代表本地库指向的那个分支。 (关于分支将在第三小结会详细介绍)

二、修改并保存到本地版本库 && 保持本地库与远程库同步

通过如上操作,此时此刻我们已经拥有了learnGit本地版本库。接下来,我们就尝试着修改learnGit文件下的README内容,修改如下:

# learnGit
learning the git command and modify a little

接着,通过git status命令查看本地版本库状态:

提示中,清楚地告诉我们README.md文件已修改,且让我们用git add命令将"工作区域"变化的文件更新到staged区域,以便接下来的git commit操作;或则,如果我们想在工作区域撤销这个修改,那么我们可以通过git checkout -- <file> 这个命令来撤销。

那么, git checkout -- <file>是怎么撤销的呢?如这里的README.md文件,首先会查看staged区域是否存储着README.md文件,如果有,就将README.md文件内容恢复到这个状态,如果staged区域没有,那么就会将README.md文件撤销回本地版本库一摸一样的状态。

看到这里,估计你可能已经晕掉。我靠,能说得具体点吗?!!什么是工作区域,什么是staged区域,什么又是版本库区域呢。

先来一张图,如下:

当我们将Github上的learnGit远程库克隆到本地后,就生成了一个本地版本库master。当我们在这个本地版本库下,进行增删改文件时,其实变化都在工作区域(Working directory)。如果我们想将这些增删改的文件与本地版本库关联,那么就得先git add操作命令将这些变化放到stage里,随后才能通过git commit命令,将stage里的变动文件提交到本地版本库。

好了,我们首先通过git add命令,将工作区域修改的REDME.md文件添加到stage区域,如下:

然后,再通过git status命令查看,如下:

上图被红框框着的区域,清楚的告诉我们,如果不想将某文件放在stage区域,那么请使用git reset HEAD <file>命令,使用后就会将指定的file文件重新放回工作区域,也就不会在执行git commit命令后,将其提交到本地版本库中了。

好了,现在假设我们就是想将stage区域的变动文件统统提交到本地版本库中呢?那么就使用上面提到的git commit命令呗,如下:

然后,我们再次通过git status命令查看,如下:

图中,明确地告诉我们当前分支比远程库中的代码新,那么可以用什么方式将修改传入到远程库呢?答案也已经给出,使用git push命令。

那我们就执行下git push嘛,运行完毕后,我们去Github上看看learnGit库中的READEME文件是否成功修改,结果如下:

看来是成功了。

倘若,又有另外的伙伴作用于这个master分支,且改变了其中的代码并push了,那我们应该怎样与远程master分支保持同步呢?

git pull就可以了。它会将远程改变的代码抓取下来,合并到我们代码中。

三、分支管理

.git branch

.git branch -D/-d

.git merge

.git checkout

.git fetch

.git stash

.git stash pop

四、拓展阅读

[1]. Learn Git

[2]. Git教程

[3].Git分支

Git-balabala的更多相关文章

  1. [使用]Git--命令行

    如何利用终端命令将文件上传到github远程服务器 (1) git status 命令查看下状态. (2) git pull 更新代码,确保代码是库上最新代码,防止覆盖其他人的提交. (3) git ...

  2. Git-学习笔记(常用命令集合)

    这里引用一下百度百科里Git的内容: Git --- The stupid content tracker, 傻瓜内容跟踪器.Linus Torvalds 是这样给我们介绍 Git 的. Git 是用 ...

  3. Git版本控制教程

    Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...

  4. iOS-SVN、Git

     版本控制SVN和Git使用详解     公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!     -----------------svn--------- ...

  5. 添加已有项目到git rep

    cd yourproject——homegit init //在当前项目目录中生成本地git管理,建立一个隐藏.git目录 git add src //添加你想用git管理的代码的目录 git com ...

  6. iOS开发——开发实战篇&版本控制SVN和Git使用详解

     版本控制SVN和Git使用详解     公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!     -----------------svn--------- ...

  7. linux Git版本控制学习与Git服务器搭建

    来源地址 要随时掌握工作区的状态,使用git status命令. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容. 初始化一个Git仓库,使用git init命令. ...

  8. git和码云的使用

    什么是码云 快速入门 Git入门 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进 ...

  9. Redhat 6 git服务器配置 (git-daemon)

    git-daemon是按照git的自己的git协议进行访问git服务   1.git-daemon软件安装 软件仓库见 redhat 6 git 服务器 配置 (http)   2.配置git dae ...

随机推荐

  1. 【Docker】第五篇 Docker 数据管理

    一.基本介绍 数据管理的原因:Docker中的容器一旦删除,容器本身的rootfs文件系统就会被删除,容器中的所有数据就会被删除.为了对一些需要持久化的数据,不随容器删除而删除,所以我们可以通过多个容 ...

  2. 从零开始的Python学习Episode 21——socket基础

    socket基础 网络通信要素: A:IP地址   (1) 用来标识网络上一台独立的主机 (2) IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络/网段.主机号:用于识别该网络中的 ...

  3. Codeforces Round #515 (Div. 3) 解题报告(A~E)

    题目链接:http://codeforces.com/contest/1066 1066 A. Vova and Train 题意:Vova想坐火车从1点到L点,在路上v的整数倍的点上分布着灯笼,而在 ...

  4. PyCharm配置SFTP远程调试Django应用

    http://www.ithao123.cn/content-41747.html http://www.th7.cn/system/lin/201703/205998.shtml

  5. 大华摄像头WEB页面集成

    对于海康.大华的摄像头web页面内的集成方式,根据浏览器类型,通常是采用以下形式: IE内核:调用ocx控件 例如: <object width="100%" height= ...

  6. MathExam6378

    我的第一个程序 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 15 10 • Estima ...

  7. Scapy之ARP询问

    引言 校园网中,有同学遭受永恒之蓝攻击,但是被杀毒软件查下,并知道了攻击者的ip也是校园网.所以我想看一下,这个ip是PC,还是路由器. 在ip视角,路由器和pc没什么差别. 实现 首先是构造arp报 ...

  8. beat冲刺(7/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(7/7) 后敬甲(组长) 过去两天完成了哪些任务 ppt制作 视频拍摄 接下来的计划 准备答辩 还剩下哪些 ...

  9. SpringMVC(二)-- springmvc的系统学习之跳转结果的方式

    资源: 尚学堂   邹波  springmvc框架视频 若无特别注明,例子项目的配置方式为注解 一.设置ModelAndView对象. 1.根据View的名称和视图解析器跳转到指定的页面. 2.跳转的 ...

  10. 《TCP/IP 详解 卷1:协议》第 5 章:Internet 协议

    IP 是 TCPIP 协议族中的核心协议.所有 TCP.UDP.ICMP.IGMP 数据都通过 IP 数据包(又称为 packet)来传输.IP 的英文名为 Internet Protocol,是互联 ...