想必大家都听说过且用过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. SSZipArchive解压失败的原因

    SSZipArchive 解压失败的原因是路径不对解压失败后,修正路径后再次解压就会出现解压失败的情况,代理方法也不会走也没有日志输出.解决方法就是删除手机上的软件再次运行就可以了.这个问题也就在内部 ...

  2. unload没有用

    今天下午测试了unload这个事件包括beforeunload <script type="text/javascript"> window.addEventListe ...

  3. 20172319 2018.04.01-04.11 《Java程序设计》第5周学习总结

    20172319 2018.04.01-04.11 <Java程序设计>第5周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错 ...

  4. Struts2框架学习

    Struts功能详解——ActionMapping对象 ActionMapping描述了struts中用户请求路径和Action的映射关系,在struts中每个ActionMapping都是通过pat ...

  5. keras+theano+tensorflow+darknet

    keras 安装: 最好在anaconda的虚拟环境下搭建: conda create -n 环境名 python=3.6 进入环境: source activate 环境名 安装keras: pip ...

  6. JAVA 对象序列化——Serializable

    1.序列化是干什么的?       简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object st ...

  7. Redis4.0 主从复制(PSYN2.0)

    Redis4.0版本相比原来3.x版本,增加了很多新特性,如模块化.PSYN2.0.非阻塞DEL和FLUSHALL/FLUSHDB.RDB-AOF混合持久化等功能.尤其是模块化功能,作者从七年前的re ...

  8. 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: 未能加载文件或******

    这个问题是在用installutil.exe安装服务时候碰到的 解决方法就是把installutil.exe文件直接复制到要安装的目录下 installutil.exe的所在位置 windows/mi ...

  9. 软盘相关知识和通过BIOS中断访问软盘

    一. 软盘基础知识介绍 (1) 3.5英寸软盘 3.5英寸软盘分为上下两面,每面有80个磁道,每个磁道又分为18个扇区,每个扇区大小为512个字节. 软盘大小计算: 2面 * 80磁道 * 18扇区 ...

  10. Html5 web 本地存储 (localStorage、sessionStorage)

    HTML5 提供了两种在客户端存储数据的新方法localStorage,sessionStorage sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在, ...