Git-balabala
想必大家都听说过且用过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的更多相关文章
- [使用]Git--命令行
如何利用终端命令将文件上传到github远程服务器 (1) git status 命令查看下状态. (2) git pull 更新代码,确保代码是库上最新代码,防止覆盖其他人的提交. (3) git ...
- Git-学习笔记(常用命令集合)
这里引用一下百度百科里Git的内容: Git --- The stupid content tracker, 傻瓜内容跟踪器.Linus Torvalds 是这样给我们介绍 Git 的. Git 是用 ...
- Git版本控制教程
Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...
- iOS-SVN、Git
版本控制SVN和Git使用详解 公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn--------- ...
- 添加已有项目到git rep
cd yourproject——homegit init //在当前项目目录中生成本地git管理,建立一个隐藏.git目录 git add src //添加你想用git管理的代码的目录 git com ...
- iOS开发——开发实战篇&版本控制SVN和Git使用详解
版本控制SVN和Git使用详解 公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn--------- ...
- linux Git版本控制学习与Git服务器搭建
来源地址 要随时掌握工作区的状态,使用git status命令. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容. 初始化一个Git仓库,使用git init命令. ...
- git和码云的使用
什么是码云 快速入门 Git入门 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进 ...
- Redhat 6 git服务器配置 (git-daemon)
git-daemon是按照git的自己的git协议进行访问git服务 1.git-daemon软件安装 软件仓库见 redhat 6 git 服务器 配置 (http) 2.配置git dae ...
随机推荐
- [机器学习]-K近邻-最简单的入门实战例子
本篇文章分为两个部分,前一部分主要简单介绍K近邻,后一部分是一个例子 第一部分--K近邻简介 从字面意思就可以容易看出,所谓的K近邻,就是找到某个样本距离(这里的距离可以是欧式距离,曼哈顿距离,切比雪 ...
- resize2fs命令详解
基础命令学习目录首页 原文链接:http://blog.51cto.com/woyaoxuelinux/1870299 resize2fs:调整ext文件系统的空间大小 搭配逻辑卷lv使用方法: ...
- [leetcode-921-Minimum Add to Make Parentheses Valid]
Given a string S of '(' and ')' parentheses, we add the minimum number of parentheses ( '(' or ')', ...
- No.11_功能规格说明书
功能规格说明书 • 基本目标 为用户提供更加便捷和人性化的闹钟提醒服务,以群组为单位规划时间安排与分配,对于个人用户,实现个人的设置闹钟,取消闹钟的操作,这些操作将会上传至数据库,并被同步到所有的客户 ...
- 【图论】POJ-3169 差分约束系统
一.题目 Description Like everyone else, cows like to stand close to their friends when queuing for feed ...
- Alpha 冲刺报告2
Alpha 冲刺报告 队名: 组长:吴晓晖 今天完成了哪些任务: 代码量300+,完成了百度地图API的引入. 展示GitHub当日代码/文档签入记录: 明日计划: 整理下这两个功能,然后补些bug ...
- nigix安装
树莓派安装nginx,参考http://blog.csdn.net/zizi7/article/details/54347223 1. 下载PCRE 并安装. 主页地址: ftp://ftp.csx. ...
- AVMoviePlayer 视频播放器
AVMoviePlayer 是使用系统框架 MPMoviePlayerController 封装的视频播放器 一.功能: 1.根据手机旋转自由切换横竖屏:2.手势轻点显示/隐藏topView/bott ...
- ubuntu中启动VIM,以及学习VIM
启动VIM:首先打开终端,然后输入vi回车,然后输入i或者a,进入. 学习VIM:首先打开终端,然后输入vimtutor回车,然后进入教程学习.
- TiDB注意事项
公司最近在上测试的TiDB集群,这款数据库类似MySQL,但又不完全一致,在使用的时候有一下注意事项,在这里记录一下.