我们在早先一篇文章中已经快速介绍过 Vi 速查表了。在这篇文章里,我们将会介绍开始使用 Git 时所需要的基础命令。

Git

Git 是一个分布式版本控制系统,它被用在大量开源项目中。它是在 2005 年由 Linux 创始人 Linus Torvalds 写就的。这个程序允许非线性的项目开发,并且能够通过存储在本地服务器高效处理大量数据;在这个教程里,我们将要和 Git 愉快玩耍并学习如何开始使用它。

我在这个教程里使用 Ubuntu,但你可以使用你选择的任何发行版。除了安装以外,剩下的所有命令在任何 Linux 发行版上都是一样的。

安装 Git

要安装 git 执行以下命令:

sudo apt-get install git-core

在它完成下载之后,你就安装好了 Git 并且可以使用了。

设置 Git

在 Git 安装之后,不论是从 apt-get 还是从源码安装,你需要将你的用户名和邮箱地址复制到 gitconfig 文件。你可以访问 ~/.gitconfig 这个文件。

全新安装 Git 之后打开它会是完全空白的:

sudo vim ~/.gitconfig

你也可以使用以下命令添加所需的信息。将“user”替换成你的用户名,“user@example.com”替换成你的邮箱。

git config --global user.name "User"
git config --global user.email user@example.com

然后你就完成设置了。现在让我们开始 Git。

仓库

创建一个新目录,打开它并运行以下命令:

git init

这个命令会创建一个新的 Git 仓库(repository)。你的本地仓库由三个 Git 维护的“树”组成。

第一个是你的工作目录(Working Directory),保存实际的文件。第二个是索引,实际上扮演的是暂存区(staging area),最后一个是 HEAD,它指向你最后一个 commit 提交,使用 git clone /path/to/repository 签出你的仓库(从你刚创建的仓库或服务器上已存在的仓库)。

添加文件并提交

你可以用以下命令添加改动:

git add <filename>

这会添加一个新文件到暂存区以提交。如果你想添加每个新文件,输入:

git add --all

添加文件之后可以使用以下命令检查状态:

git status

正如你看到的,那里已经有一些变化但还没有提交。现在你需要提交这些变化,使用:

git commit -m "提交信息"

你也可以这么做(首选):

git commit -a

然后写下你的提交信息。现在你的文件提交到了 HEAD,但还不在你的远程仓库中。

推送你的改动

你的改动在你本地工作副本的 HEAD 中。如果你还没有从一个已存在的仓库克隆,或想将你的仓库连接到远程服务器,你需要先添加它:

git remote add origin <服务器地址>

现在你可以将改动推送到指定的远程服务器。要将改动发送到远程服务器,运行:

git push -u origin master
分支

分支用于开发特性,分支之间是互相独立的。主分支 master 是你创建一个仓库时的“默认”分支。使用其它分支用于开发,在完成时将它合并回主分支。

创建一个名为“mybranch”的分支并切换到它之上:

git checkout -b mybranch

你可以使用这个命令切换回主分支:

如果你想删除这个分支,执行:

git branch -d mybranch

除非你将分支推送到远程服务器上,否则该分支对其他人是不可用的,所以只需把它推送上去:

git push origin <分支名>
更新和合并

要将你本地仓库更新到最新的提交上,运行:

git pull

在你的工作目录获取并合并远程变动。要合并其它分支到你的活动分支(如 master),使用:

git merge <分支>

在这两种情况下,git 会尝试自动合并(auto-merge)改动。不幸的是,这不总是可能的,可能会导致冲突。你需要通过编辑 git 所显示的文件,手动合并那些冲突。改动之后,你需要用以下命令将它们标记为已合并:

git add <文件名>

在合并改动之前,你也可以使用以下命令预览:

git diff <源分支> <目标分支>
Git 日志

你可以这么查看仓库历史:

git log

要以每个提交一行的样式查看日志,你可以用:

git log --pretty=oneline

或者也许你想要看一个所有分支的 ASCII 艺术树,带有标签和分支名:

git log --graph --oneline --decorate --all

如果你只想看哪些文件改动过:

git log --name-status

在这整个过程中如果你需要任何帮助,你可以用 git --help。

Git 棒不棒?!祝贺你你已经会 Git 基础了。如果你愿意的话,你可以从下面这个链接下载这些基础 Git 命令作为快速参考:

下载 Git 速查表

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

你应该知道的基础 Git 命令的更多相关文章

  1. Git项目协同开发学习笔记1:项目库开发基础git命令

    这年头git基本都是项目开发的标配,之前刚好碰到了就花了两天时间系统学习了下.本文内容基本来自以下tutorial:Learn Git(建议直接去看原文,因为这个网站是有更新的).这个是我看过对git ...

  2. git 命令(基础篇)的本质理解

    主要命令 1. 提交,git commit 本质:创建一个节点(node),标志了当前位置(node)与以前的node存在不同之处,如下图中的 c0 <-- c1 <-- c2 等等 图中 ...

  3. 3分钟学会git命令的基础使用

    前言废话 下面我们就来看看gitlab服务器搭建好(http://www.cnblogs.com/JeremyWYL/p/8258368.html) 之后,git命令的基础使用,基本上就能满足我们平时 ...

  4. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  5. 程序员必备基础:Git 命令全方位学习

    前言 掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ https: ...

  6. 『现学现忘』Git基础 — 26、给Git命令设置别名

    目录 1.什么是Git命令的别名 2.别名的全局配置 3.别名的局部配置 4.删除所有别名 5.小练习 1.什么是Git命令的别名 Git中命令很多,有些命令比较长,有些命令也不好记,也容易写错. 例 ...

  7. git-quick-start 动画讲解Git命令行

    来源:http://git.oschina.net/wzw/git-quick-start#git-quick-start git-quick-start 这是一个git的快速入门项目,使用一些gif ...

  8. Git命令详解

    一个中文git手册:http://progit.org/book/zh/ 原文:http://blog.csdn.net/sunboy_2050/article/details/7529841 前面两 ...

  9. Git命令汇总(补充篇)

    上一篇<Git命令汇总基础篇>总结了使用Git的基本命令,这一篇作为补充主要给大家讲一些平时使用中的技巧和总结 . 学会了这些命令,已经基本解决了使用Git中大部分问题. 1.gitign ...

随机推荐

  1. Asp.net MVC Bundle 的使用与扩展

    一.Asp.net 自带Bundle的使用: 1. 在Globale中注册与配置 BundleConfig.RegisterBundles(BundleTable.Bundles); public c ...

  2. cocos2dx 内存管理

    转载自 ocos2dx 内存管理 - 小花原创博客 - 博客频道 - CSDN.NET http://blog.csdn.net/ring0hx/article/details/7946397 coc ...

  3. 轻松学习Linux之自动执行任务

    在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行,系统管理员可使用自动化的任务来执行定期备份.监控系统.运行定制脚本等,往往初学者都是win用户,习 ...

  4. Tmux常用快捷键以及我会常到的一些问题汇总

    今天部署测试服务器环境 使用到了tmux 刚开始我把tmux想象成了像omzsh这种shell 但是被指出是错误的,tmux类似于在shell里面的软件.我还真是第一次接触到这个概念. 首先安装 br ...

  5. MySQL 5.5 服务器变量详解一(转)

    add by zhj:在MySQL5.6中对一些参数有增删改,详见http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html ...

  6. 移动Web单页应用开发实践——页面结构化

    1. 前言 在开发面向现代智能手机的移动Web应用的时候,无法避免一个事实,就是需要开发单页应用(Single Page WebApp).对于不同的系统需求,单页应用的粒度会不同,可能是整个系统都使用 ...

  7. IE8-模拟script onerror

    利用VBScript 检测,有副作用,慎用! var loadScript = function () { var DOC = document, HEAD = document.getElement ...

  8. sql的union用法

    sql中union是很常见的,尤其是创建视图时,完全离不开union. SQL UNION 操作符合并两个或多个 SELECT 语句的结果,UNION 内部的每个 SELECT 语句必须拥有相同数量的 ...

  9. OWA修改密码注意事项

    Exchange搭建参考 http://yuelei.blog.51cto.com/202879/76302 http://543925535.blog.51cto.com/639838/d-37/p ...

  10. 接口是干爹, 继承是亲爹 ---JAVA

    接口(interface)是干爹, 因为你可以有很多很多的干爹爹... 继承(extends)是亲爹, 因为你只能有一个父类, 只有一个亲生的父亲. 单继承,多接口?./>./..