git的使用(入门篇)
1.Git 的安装
Window 下的安装
从 http://git-scm.com/download 上下载window版的客户端,然后一直下一步下一步安装git即可,请注意,如果你不熟悉每个选项的意思,请保持默认的选项
Ubuntu 下安装
在终端下执行 apt-get install git
Centos/Redhat 安装
在终端下执行 yum install git
Fedora23 安装
在终端下执行 dnf install git 或者 yum install git
Fedora22/21 安装
在终端下执行 yum install git
SUSE/OPENSUSE安装
在终端下执行 sudo zypper install git
Mac OS X 安装
在终端下执行brew install git (注:请自行解决环境变量以及Brew工具的问题)
编译安装(注:仅适合非window系统)
从 https://github.com/git/git/releases 上选取一个版本下载,解压缩后进入到 Git 的目录然后依次执行以下代码:
make configure
./configure
make all
sudo make install
注意:如果遇上无法编译的问题,请自行通过搜索引擎来查找 Git 所需的依赖
如果以上一切正常,打开终端(Window下请打开安装git时一并安装的bash) 输入 git --version 应该会显示如下类似的信息
git version 2.5.0
配置自己的用户名和邮箱
在使用git前,我们需要告诉git自己是谁以及自己的邮箱是什么,所以我们需要对git进行一些基本设置。打开终端(Windows打开安装git时安装的git bash)执行如下命令
git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"
这样就配置好了这台电脑的git 如果您没有安装git bash或者使用其他工具,建议您查找该工具的设置教程,本文档建议使用命令行终端操作git,这样遇上的兼容性问题最小。
关于如何配置sshkey问题,请参阅ssh key相关问题
Git 的一些基本名词/概念/常用命令解释以及实例
仓库
在 Git 的概念中,仓库,就是你存在.git目录的那个文件夹内的所有文件,包括隐藏的文件,Git程序会再当前目录以及上级目录查找是否存在.git文件,如果存在,则会将.git目录存在的文件夹开始下的所有文件当成你需要管理的文件,所以,我们如果想将某个文件夹当做一个Git仓库,你可以在那个文件夹下通过终端(Window为Cmd或者PoewrShell或者Bash)来执行
git init
这样,你所期望的那个文件夹就成为了一个Git管理的仓库了
版本
严格来讲,Git并不存在版本的概念,但人们也硬是发展出了这么个玩意,在Git中,计数基础是提交,即我们常说的Commit,我们每做一点更改便可以产生一次提交,当提交累计起来,可以作为产品定型时,就在当前的Commit上打上一个标记,将这个标记我们称之为版本多少多少,那么就算完成了一个版本,标记本身被称之为Tag,请注意,在Git中,版本仅仅只是某一个提交的标签,并没有其他意义,Git本身也仅有打标签的功能,并没有版本功能,版本功能是根据Tag来扩展的,Git本身并没有
分支
这是Git中最重要的也是最常用的概念和功能之一,分支功能解决了正在开发的版本与上线版本稳定性冲突的问题在Git使用过程中,我们的默认分支一般是Master,当然,这是可以修改的,我们在Master完成一次开发,生成了一个稳定版本,那么当我们需要添加新功能或者做修改时,只需要新建一个分支,然后在该分支上开发,完成后合并到主分支即可
提交
提交在Git中同样是非常重要的概念,Git对于版本的管理其实是对于提交的管理,在整个Git仓库中,代码存在的形式并不是一分一分的代码,而是一个一个的提交,Git使用四十个字节长度的16进制字符串来标识每一个提交,这基本保证了每一个提交的标识是唯一的,然后通过组织一个按照时间排序的提交列表,就组成了我们所说的分支,请注意,分支在本质上只是一个索引,所以,我们可以任意回退,修正,即使因为某些原因丢失了,也可以重建另外,关于Git的储存方式:Git是仅仅只储存有修改的部分,并不会储存整个文件,所以,请不要删除文件夹整个文件夹的内容,除非你确定你不再需要他,否则请勿删除
同步
同步,也可以称之为拉取,在Git中是非常频繁的操作,和SVN不同,Git的所有仓库之间是平等的,所以,为了保证代码一致性,尽可能的在每次操作前进行一次同步操作,具体的为在工作目录下执行如下命令:
git pull origin master
其中origin代表的是你远程的仓库,可以通过命令 git remote -v 查看,master是分支名,如果你本地是其他分支,请换成其他分支的名字,另,因为远程仓库与你本地仓库可能存在冲突,故当存在冲突时,请参考进阶篇的如何处理冲突
推送
和拉取一样,也是一个非常频繁的操作,当你代码有更新时,你需要更新到远程仓库,这个动作被称之为推送,执行的命令与拉取一样,只是将其中的pull这个单词改成push,同样,如果远程仓库存在你本地仓库没有的更新,则在推送前你需要先进行一次同步,如果你确定你不需要远程的更新,则在推送时加上 -f 选项,则可以强制推送,注:在协同开发中,我并不建议这么做,因为这样很可能覆盖别人的代码
推送代码示例:
git push origin master
强制推送代码示例:
git push origin master -f
git push -u origin master -f
冲突
在使用Git开发时,如果只是一个人使用,那么基本不会产生冲突,但是在多人合作开发的情况下,产生冲突是很正常的一件事情,关于如何处理冲突,请参考进阶篇的如何处理代码冲突 这一小节
合并
合并这个命令通常情况下是用于两个分支的合并,一般用于本地分支,远程分支多用Pull命令,该命令的功能是将待合并分支与目标分支合并在一起,注意,这个命令只会合并当前版本之前的差异,两个分支的提交历史会根据提交时间重新组织索引,故只可能会产生一次冲突但是会生成一个提交,如果你不想生成这次提交,加上 --base参数即可
暂存
这个既是一个概念也是一个命令,其含义就是字面上的,作用就是可以将你当前正在进行的工作暂时存起来,然后在此基础上干别的事情,等你别的事情干完后,再转回来继续,注意,暂存只是针对你最后一次改动而言,即针对当前所在的版本的所有改动都算具体执行命令为:
将当前改动暂存起来:
git stash
恢复最后一次暂存的改动
git stash pop
查看有多少暂存
git stash list
撤销
撤销命令使用是非常频繁的,因为某些原因,我们不再需要我们的改动或者新的改动有点问题,我们需要回退到某个版本,这时就需要用到撤销命令,或者说这个应该翻译成重置更加恰当。具体命令如下:
撤销当前的修改:
git reset --hard
请注意:以上命令会完全重置你的修改,如果你想保留某些文件,请使用checkout +文件路径 命令来逐一撤销修改
如果你想重置到某一版本,可以将 --hard 改为具体的Commit的id如:
git reset 1d7f5d89346
请注意,这时你的修改仍然存在,只是你的最近一次提交的版本号变成了你要重置的版本,如果说你想完全丢弃修改,只需要加上 --hard参数就可以
这里解释的只是一些工作中经常用到的git的基本概念,名词,并不包含Git的所有名词,概念解释,故本文未提到之处请自行使用搜索引擎搜索;另:文档编撰者尽可能的寻找标准的解释,因结果来自于互联网,如果解释有错漏之处,烦请指出并给出正确的解释,谢谢
另,本文仅提到部分常使用的概念以及命令,但Git远远不止这些东西,所以,在本文找不到的内容请自行百度,这里推荐 Git的官方文档(中文和英文均有,由官方以及志愿者维护):http://git-scm.com/book/zh/v2 ,廖雪峰博客:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
如何克隆一个项目
以克隆项目git@git.oschina.net:zxzllyj/sample-project.git为例(注:本处使用的是ssh地址,因为演示机已经配置好ssh公钥,故可以使用ssh地址,如果您没有配置公钥,请使用https地址)
注:上图的方法虽然将仓库完整的拉取了下来,但是仅仅只会是显示默认分支,如果需要直接到指定的分支,可以在仓库地址后面加上分支名
Git 仓库的一些基本操作
1.修改仓库名
一般来讲,默认情况下,在执行clone或者其他操作时,仓库名都是 origin 如果说我们想给他改改名字,比如我不喜欢origin这个名字,想改为 oschina 那么就要在仓库目录下执行命令:
git remote rename origin oschina
这样 你的远程仓库名字就改成了oschina,同样,以后推送时执行的命令就不再是 git push origin master 而是 git push oschina master 拉取也是一样的
2.添加一个仓库
在不执行克隆操作时,如果想将一个远程仓库添加到本地的仓库中,可以执行
git remote add origin 仓库地址
注意: 1.origin是你的仓库的别名 可以随便改,但请务必不要与已有的仓库别名冲突 2. 仓库地址一般来讲支持 http/https/ssh/git协议,其他协议地址请勿添加
3.查看当前仓库对应的远程仓库地址
git remote -v
这条命令能显示你当前仓库中已经添加了的仓库名和对应的仓库地址,通常来讲,会有两条一模一样的记录,分别是fetch和push,其中fetch是用来从远程同步 push是用来推送到远程
git的使用(入门篇)的更多相关文章
- .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...
- 版本控制工具Git工具快速入门-Linux篇
版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- 服务端技术进阶(八)GitHub入门篇
服务端技术进阶(八)GitHub入门篇 前言 在投递简历的过程中,发现有的公司会要求填写自己的GitHub地址,而自己却还没有GitHub帐号,准确点说是自己还不太会使用GitHub.(貌似开源社区中 ...
- Erlang Rebar 使用指南之一:入门篇
Erlang Rebar 使用指南之一:入门篇 全文目录: https://github.com/rebar/rebar/wiki 本章原文: https://github.com/rebar/reb ...
- .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划
.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...
- .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入
作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9998021.html 写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
随机推荐
- CCNA基础知识摘录
cisco设备的启动要点: 1.检测硬件(保存在rom) 2.载入软件(IOS)(保存在Flash) 3.调入配置文件(密码,IP地址,路由协议都保存在此)(此文件保存在NVRAM) 0x2102:正 ...
- Vuforia开发完全指南---Vuforia概述
Vuforia概述 AR(Augmented Reality)增强现实,想必大家都已经很熟悉了.这是当下最热的技术之一,是利用计算机视觉和计算机图像学领域的相关知识将虚拟世界融入到现实生活当中.AR和 ...
- PCB Design_经验之谈
所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜.敷铜的意义在于,减小地线阻抗,提高抗干扰能力:降低压降,提高电源效率:与地线相连,还可以减小环路面积.也出于让PCB ...
- 201521123028 《Java程序设计》第5周学习总结
1. 本周学习总结 2. 书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. Ch ...
- 201521123015 《Java程序设计》第4周学习总结
本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法. 3 ...
- 201521123024《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...
- 201521123087 《Java程序设计》第2周学习总结
1.本周学习总结 类名第一个字母大写,类名下的方法如main第一个字母要小写: Java有三种基本数据类型:整型(byte,short,int,long,char),浮点型(float,double) ...
- Linux-exec命令试验驱动(12)
对于做驱动经常会使用exec来试验驱动,通过exec将-sh进程下的描述符指向我们的驱动,来实现调试 -sh进程常用描述符号: 0:标准输入 1:标准输出 2:错误信息 5:中断服务 exec命令使用 ...
- Python学习笔记011_模块_标准库_第三方库的安装
容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...
- Javascript-正则表达式-开发中的使用.
-- "(-1~99)之间 -1表示无限次!" pattern="^((-1)|([0-9]{0,2}))$" -- "(0~99.99)之间 的金额 ...