Git,Github和Gitlab简介和基本使用
什么是Git
Git是一个版本控制系统(Version Control System,VCS)。
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
多年前,我在法国做第一个实习时(2011年),那时候自己编程还在入门阶段,根本没听过版本控制系统。
那时候真是蠢(现在也没好到哪里去),每次修改多一点的代码,就要复制、黏贴整个项目目录。因此,公司的电脑里有着几十个项目的副本(简直了)。
前不久,我看到公司的一个实习生也在做和我多年前同样的事。而且我们问他,他说没听说过版本控制系统...
现在,我用Git也有几年了吧。绝对是越用越爽,不用不爽;一朝使用,爱不释手。
每天到公司第一件事,开电脑;第二件事,在终端中切换到项目目录,然后输入Git命令。
有了版本控制系统,就可以不用担心文件丢失,不小心误修改文件等等“事故”,而且你可以随便回到历史记录的某个时刻。
SVN, CVS这类早期的集中式版本控制系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
它们的原理类似下图:

而Git或Mercurial这类分布式版本控制系统, 才是现代的首选。因为分布式的优势绝对显著。
在分布式版本控制系统里,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。
这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

现在,Google, Facebook, Microsoft等世界级公司每天在用Git。
众所周知,IT界大牛很多, 但是大牛中的大牛稀少。
Linus Torvalds就是其中之一。
Linus Torvalds不但开创了Linux操作系统(当然了, 开源社区对Linux贡献极大, 参看我的【Linux探索之旅】开宗明义+第一部分第一课:什么是Linux?), 而且他发明了Git版本控制系统。
现在的Android系统底层就是基于更改过的Linux系统,你说Linus Torvalds是不是贡献极大。
Git的诞生很有趣:
2005年Linux 内核开发社区正面临严峻的挑战:他们不能继续使用 BitKeeper(一个分布式版本控制系统) 了(原因是当时Bitkeeper 著作权所有者决定收回授权,内核开发团队与其协商无果),而又没有其他的 SCM (Software Configuration Management)可满足他们的分布式系统的需求。
Linux 之父 Linus Torvalds 接受了这个挑战,决定开发一个新的版本控制系统。周末他消失了,新的一周,Git 问世了。LT就是威武。
Atlassian为Git做了一个10年的纪录图。
https://www.atlassian.com/git/articles/10-years-of-git/
Git配置和常用命令
安装Git很简单,在Ubuntu等Debian族的Linux系统上,只要输入下面命令:
sudo apt-get install git-all
关于安装Git,可以看这个链接
https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
安装完Git就可以对其做一些配置。
Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:
/etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。
~/.gitconfig 文件 :具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。
位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。
我的Git config(配置)列表:

这个配置就在你的个人目录的.gitconfig(有一个点哦, 不用ls -al是看不到的)文件中, 你可以用vim来打开编辑内容 (vim ~/.gitconfig), 我的内容如下
[user]
name = Enming Xie
email = enming.xie@blabla.fr
[color]
ui = auto
[alias]
st = status
pl = pull --ff-only
ps = push
co = checkout
ci = commit
df = difftool
cp = cherry-pick
ca = commit --amend
br = branch
l = log --stat
last = log -1
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
up = push origin
lf = log --follow -p
aa = ls-files --modified
su = status -uno
cm = commit -m
uf = push origin -f
cl = clean -fdx
fe = fetch --prune
cf = clean -fdx
bd = branch -D
cb = checkout -b
[push]
default = simple
[core]
editor = vim pager = less -+F
[diff]
tool = meld
[difftool]
prompt = false
[merge]
tool = meld
[init]
templatedir = ~/.git_template
因为我比较喜欢偷懒(程序员需要学会偷懒好么), git命令有几个太长的, 我就用alias(别名)来替代了, 这样平时输入git命令就快了很多, 简直飞起!
我最常用的Git命令(全名,没用alias之前):
git checkout
git status
git checkout -b
git commit
git diff
git add
git clean -fdx
git fetch --prune
git pull --ff-only
git branch -D
git push
git merge
git rm
git rebase
git reset
git revert
git push origin :yourbranch
Git必看书籍
Pro Git这本书(也可以看其电子版)绝对是Git入门和进深的不二选择。
我的同桌说:他进公司时,被要求先读两遍这本书。
英文版:
https://git-scm.com/book/en/v2
中文版:
https://git-scm.com/book/zh/v2
Github
Github 和 Git 是两回事。
Git是版本控制系统,Github是在线的基于Git的代码托管服务。
GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,但是付费账户也可以创建私有的代码仓库。
为什么现在Github这么火,以至于世界顶级公司和项目的源码很多都托管在Github上,首先:
颜值高!
现在这世代还是得看看颜值的。你说Sourceforge等代码托管网站也年岁很久了,为什么没有Github那么火呢?
关键是Github长得好看(你长这么好看,说什么都是对的)。
对比Github和Sourceforge
反正我看了Github再来看Sourceforge的主页,我已经不想用Sourceforge了。
软件的颜值体现了设计者的审美观以及设计能力。
2011年,Github已经取代Sourceforge,成为最活跃的代码交流社区。这意味着在Open Source Community(开源社区),Git取代了SVN已经成为事实。
而且,Github现在都快成为程序员简历的一个重要加分条件了。
如果你的简历里放上你的Github链接,招聘者通过你对开源项目的贡献和你自己的项目代码,就可以对你的水准了解大概(我还没把我的项目都放到Github上,慢慢来吧)。
Linus Torvalds的Github页面
Gitlab
Github有个小缺陷 (也不能算是缺陷吧), 就是你的repo(repository的缩写,表示“仓库”)都需要public(公开), 如果你想要创建private(私人)的repo, 那得付钱。
不过, 幸好, Gitlab解决了这个问题, 可以在上面创建免费的私人repo。
比如我们公司就是用Gitlab来管理项目的(【程序员】项目经理如何调动组员积极性)。

可以看到,我是从2015年10月12日在Ercom公司工作的,一直活跃度还不错(必须为中国人争光么,我可是组里最努力的)。
再看我个人的Gitlab账户页面,至今只有几个项目,因为大部分都开源在Github上。

要创建Gitlab的新项目很简单,和Github类似,只要点击New Project按钮,填写基本信息即可。


可以看到,项目的默认属性是Private(私人的),当然,你也可以选择Public(公开的)或Internal(内部的)。
怎么样,Github和Gitlab很酷吧。
作者:程序员联盟
链接:http://www.jianshu.com/p/8d497989f704
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Git,Github和Gitlab简介和基本使用的更多相关文章
- Git(1) - Git、Github和Gitlab简介
Git是什么 概念 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. SVN.CVS等,它们是集中式版本控制系统. 集中式和分布式版本控制 ...
- Git,Github和Gitlab简介和使用方法
什么是Git Git是一个版本控制系统(Version Control System,VCS). 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 多年前,我在法国做第一 ...
- 【转载】Git,Github和Gitlab简介和基本使用Gitlab安装和使用
http://blog.csdn.net/u011241606/article/details/51471367
- Introduction of Git, Github and Gitlab
========================================================================== Version control is a syst ...
- Git,GitHub以及GitLab的区别
Git - 版本控制工具 Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等 GitLab - 基于Git的项目管理软件 Git分布式版本控制系统 Git是一款 ...
- Git安装/VScode+Git+Github
Git安装/VScode+Git+Github 1. 相关简介 git 版本控制工具,支持该工具的网站有Github.BitBucket.Gitorious.国内的OS China仓库.Csdn仓库等 ...
- Git详解及 github与gitlab使用
1.1 关于版本控制 1.1.1 本地版本控制 本地版本控制系统 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别.这么做唯一的 好处就是简单,但是特别容易犯错.有 ...
- git、github、gitlab之间的关系
GIt-版本控制工具:GitHub-一个网站平台,提供给用户空间存储git仓储,保存用户的一些数据文档或者代码等:GitLab - 基于Git的项目管理软件. Git分布式版本控制系统 Git是一款自 ...
- 一台电脑支持2个git账号:gitlab+github
一.背景 1.公司使用gitlab保存代码,git已支持. 2.需要新增一个人github账户.创建study项目并提交到github上. 3.git提交时互相不混淆 二.操作流程 1.注册githu ...
随机推荐
- 【转】CSS颜色代码大全
转自http://www.cnblogs.com/axing/archive/2011/04/09/CSS.html FFFFFF #DDDDDD #AAAAAA #888888 #666666 #4 ...
- Export OracleDB Schema To Doc
叶正盛先生做的mini工具. https://github.com/rgqancy/DBExportDoc 使用中遇到过两个小问题: 1.数据库的表名不能带.(我一个很初级的同事建立的数据库是demo ...
- 一种快速统计SQL Server每个表行数的方法
转载自:http://www.cnblogs.com/kenyang/archive/2013/04/09/3011447.html 我们都知道用聚合函数count()可以统计表的行数.如果需要统计数 ...
- 深度学习中 --- 解决过拟合问题(dropout, batchnormalization)
过拟合,在Tom M.Mitchell的<Machine Learning>中是如何定义的:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比 ...
- node的cookie-parser和express-session
let express = require('express'); let cookieParser = require('cookie-parser'); let expressSession = ...
- [日常工作] Linux与Windows的连接访问以及数据共享等方法 vncserver smb xshell xftp winscp mount等
日常办公机器是用 windows, 但是越来越多的测试和工作需求需要使用linux. 这里以最常用的系统centos为例进行说明 1. 远程连接 ssh的方式 建议使用xmange 系列的 xshel ...
- 【工具技巧】:sublime notepad++ 多行编辑
1. 多行编辑 sublime 最简单的多行编辑实现方法 1. 鼠标选中文件 然后按 ctrl+D 自动选中相同的进行同时编辑 2.选中shift按键+鼠标右键进行选择,可以同时选中多行进行编辑. n ...
- 电梯间的谈话:3分钟快速回答CEO的问题
想象一下,你在电梯里遇见了公司的CEO,他让你用3分钟来解释聚焦答案模式这个深奥的术语到底是什么意思.你可以这么说—— 为奠定一个正确的基调,让他酝酿好情绪听你说接下来的话,你可以这样开头: “总裁, ...
- RAD Studio XE2破解、安装、试用
RAD Studio XE2刚发布没几天,网上找到了破解,鸡冻啊.迫不及待的下载安装. 新特性: 使用FireMonkey ?创建令人印象深刻的商业应用 构建64位Delphi应用程序以利用最新的硬件 ...
- Gulp实现静态网页模块化的方法详解
前言: 在做纯静态页面开发的过程中,难免会遇到一些的尴尬问题.比如:整套代码有50个页面,其中有40个页面顶部和底部模块相同.那么同样的两段代码我们复制了40遍(最难受的方法).然后,这个问题就这样解 ...