之前在windows中一直采用github的桌面版,库的建立更新都是借助软件的帮助。所使用的的功能也非常局限,仅仅只是创建库再提交自己的代码。至于版本管理、回滚、分支以及git的结构都没有清楚的认识。这次由于任务需要,在ubuntu中必须使用git来链接github,所以必须接触一些git的命令,也对git的思想有了进一步的认识。这里简单梳理以下,作为备忘录。文末也附上我参考的博客,有兴趣的可以进一步阅读。

一些认识

之前对github和git一直傻傻分不清,以为是两种不同的版本管理工具。现在才认识到git是一种版本管理工具,而github只是一个远程仓库。实际上没有github这种远程仓库,你计算机中git也会建立一个本地的仓库,或者链接到其他的远程仓库。

1. git的安装

输入命令安装git,并查看版本以确认安装成功。

sudo apt-get install git
git --version

2. git的使用

先解释一些概念,git分四层管理代码。

  1. 你目录中的文件是第一层
  2. 缓存区,每次add之后,当前目录中要追踪的文件会作为一个版本会存放在缓存区。注意不是所有的文件。一般一个文件生成之后,会标记为“未追踪”,但是否对其做版本管理还是要选择的。例如一些编译文件就没有必要追踪。对需要做版本管理的问件,用add添加,不需要的用clean删除。
  3. 本地仓库,每次commit之后,缓存区最新的版本就会存放在本地仓库。这里要提及一个HEAD的概念。HEAD是当前的版本指向,每次更新或者回退都会修改HEAD的指向,但对仓库中每一个版本并不会删除。所以即使回退到过去还是有机会回到现在的版本的。
  4. 远程仓库,每次push之后,会将本地仓库中HEAD所指向的版本存放到远程仓库

这里附上一些我常用的命令作为备忘录,详细的使用效果请参考我文末附上的博客链接。

命令 功能
git init 在本地的当前目录里初始化git仓库
git status 查看当前仓库的状态
git add -A 增加目录中所有的文件到缓存区
git add file 增加相应文件到缓存区
git commit -m "信息" 将缓存区中更改提交到本地仓库
git log 查看当前版本之前的提交记录
git reflog 查看HEAD的变更记录,包括回退
git branch -b branch_name 建立一个新的分支
git diff 查看当前文件与缓存区文件的差异
git checkout -- file 取消更改,将缓存区的文件提取覆盖当前文件
git reset --hard 版本号 回退到相应版本号,同样也可以回退到未来的版本号
git clean -xf 删除当前目录中所有未追踪的文件
git config --global core.quotepath false 处理中文文件名

这些命令用于处理本地仓库的版本管理足够了,下面我介绍与远程仓库打交道。

2. git与github的链接

首先我们认为你已经有一个github的账户。

然后我们要建立SSH链接。这是一种通讯的加密协议。我先在我的笔记本上计算一对公钥和私钥,将公钥存储在github中,这样本地就可以通过SSH与github展开加密通讯。详细的内容可以参考SSH原理与运用(一):远程登录

建立方法,输入命令

ssh-keygen -t rsa -C "your_email@youremail.com" //双引号里面是你的常用邮箱

输入之后要输入口令,可以不用输入直接按“enter”一路确认就可以了。然后在账户的根目录(/或者/home/你的账户名,具体取决于你执行上述命令时所采用的账户)查找隐藏目录.ssh/id_rsa.pub文件,将当中内容添加到github中。

这样你就可以通过SSH链接到github中了。但是github作为一个远程仓库,你可以链接这个仓库,并保持同步。但是你不能把本地仓库直接上传到github中去。所以你应该先在github中建立一个对应的仓库,然后再在本地建立一个仓库,将两者进行链接,再去写入文件执行版本管理。所用到的命令有

git remote add origin git@github.com:<用户名>/<仓库名>.git
git pull origin master //因为github建立仓库时会有readme.md文件,先要拷贝一份
git push -u origin master //将本地仓库链接到master分支上,你当然可以链接到其他分支
git push//上传你的本地仓库

还有一种方法不用分两地建库再去链接。你可以只在github上建库,然后clone到本地目录中。

git clone git@github.com:<用户名>/<仓库名>.git

至于团队合作中的分支管理,由于现在还用不到,等以后有机会试用在去学习吧。


git与github简单教程

Linux中git的使用的更多相关文章

  1. Linux中git用https连接时不用每次输入密码

    应用场景: 比如每天凌晨执行crontab对应的项目部署脚本(使用git作为项目的版本控制). 如果不这样做会怎么样? 每次部署都要git clone并输入对应的用户名和密码,需要人工.这样就显得很不 ...

  2. 解决linux中使用git,ssh每次都要输入密码

    在linux中使用git,去提交或者下载代码都是很方便的,但是最近新配置了一套系统,发现每次git pull或者其他动作都需要输入密码. 想一想不对劲啊,我使用的是ssh的方式clone的代码,而且在 ...

  3. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  4. linux显示git commit id,同时解决insmod模块时版本不一致导致无法加载问题

    linux内核默认会包含git的commit ID. 而linux的内核在insmod模块时,会对模块和内核本身的版本做严格的校验.在开发产品时,改动内核后,由于commit ID变更,会导致linu ...

  5. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  6. linux下git的简单运用

    linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...

  7. linux下git的安装和使用(转)

    转自:http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html 最近在使用github,感觉不错.在windows下,可使用g ...

  8. procps工具集 ----Linux中的可用内存指的是什么?

    https://gitlab.com/procps-ng/procps free - Report the amount of free and used memory in the system k ...

  9. linux中如何修改文件夹的用户权限 chown命令

    linux中,可以使用chown命令来修改文件夹的用户权限. 1.  以普通用户 A 登录linux,利用su -切换到root用户 2. 在root用户下,可以看到文件夹内容 3. 但通过文件系统, ...

随机推荐

  1. 串口调试者v2.1------开源c#串口调试工具

    第一步:上图 第二步:上代码 >>>>>>>>>>>源代码下载<<<<<<<<< ...

  2. 如何使用vuex

    一.何为vuex? vuex其实是一种状态管理模式,那么什么是状态管理模式呢?简单的理解就是把一些状态或者数据集中到一个地方管理,然后所有的组件共享这些数据,当数据改变时,用到这些数据的组件也会相应的 ...

  3. Linux发行版 CentOS6.5 修改默认主机名

    修改前准备 我们将主机名修改为comexchan.cnblogs.com(本文发布于http://comexchan.cnblogs.com/) 备份相关配置文件,以便回滚 cp /etc/sysco ...

  4. 基于Dubbo的http自动测试工具分享

    公司是采用微服务来做模块化的,各个模块之间采用dubbo通信.好处就不用提了,省略了之前模块间复杂的http访问.不过也遇到一些问题: PS: Github的代码示例还在整理中... 测试需要配合写消 ...

  5. MySQL视图,触发器,事务,存储过程,函数

    create triggr triafterinsertcmdlog after insert on cmd_log FOR EACH ROW trigger_body .#NEW : 代表新的记录 ...

  6. Android中Handler的消息处理机制以及源码分析

    在实际项目当中,一个很常见的需求场景就是在根据子线程当中的数据去更新ui.我们知道,android中ui是单线程模型的,就是只能在UI线程(也称为主线程)中更新ui.而一些耗时操作,比如数据库,网络请 ...

  7. Nginx集群之基于Redis的WebApi身份验证

    目录 1       大概思路... 1 2       Nginx集群之基于Redis的WebApi身份验证... 1 3       Redis数据库... 2 4       Visualbox ...

  8. 如何在MicroPython TPYBoard 添加自定义类库

    开始之前,首先要感谢一下TPYBoard技术交流群(157816561)-云之初晓网友的分享.   今天简单分享下如何将自己编写的一些Python脚本的类库添加到固件中,在使用时只需import调用, ...

  9. 【Python3之模块及包的导入】

    一.模块导入 1.定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  10. linux命令和知识点

    一.常用命令 $?    上个命令的退出状态,或函数的返回值. 二.数字判断 [ $count -gt "1"] 如果$count 大于1 为真 -gt  大于 -lt    小于 ...