转载:http://www.cnblogs.com/bear2flymoon/p/4335364.html?ADUIN=563508762&ADSESSION=1430887070&ADTAG=CLIENT.QQ.5401_.0&ADPUBNO=26464

身边的技术大牛一直都建议我使用git进行代码管理,而我每次都把这件事情忘之脑后。最近,好像感觉到了git的重要性。下面是最简单的使用git的入门方法,仅适用于像熊二飞月这样的菜鸟级git选手。

Git是一个分布式版本控制软件,原是Linux内核开发者Linus Torvalds为更好地管理Linux内核开发而设计的。

主要功能

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的方法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流及其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用Git来作为内核开发的版本控制系统的时候,世界上开源社区的反对声音不少,最大的理由是Git太艰涩难懂,从Git的内部工作机制来说,的确是这样。但是随着开发的深入,Git的正常使用都由一些友善的命令稿来执行,使Git变得非常好用。

工作步骤

1. 安装git

熊二飞月使用的是ubuntu系统,使用apt-get install git即可安装。

2. 设置Git

在能够使用Git进行工作之前,我们需要进行一次性的配置。为了能让Git能够跟踪谁做了修改,我们需要设置你的用户名。

git config --global user.name "bear2flymoon"

git config --global user.email bear2flymoon@gmail.com

这里我的用户名就设置为:bear2flymoon

邮箱为:bear2flymoon@gmail.com(谷歌被墙,无法登陆)

3. 创建一个本地代码库

假设我们的代码写在机器的/home/bear2flymoon文件夹下的’test'文件夹内。在命令行输入下列命令:

cd /home/bear2flymoon/test/

下面,我们需要告诉Git这个文件夹是我们需要跟踪的项目。所以我们在该目录下输入以下命令来初始化一个新的本地Git代码库

git init

Git会在test文件夹下创建一个名为.git的隐藏文件夹,这就是你的本地代码库。

4. 暂存(stage)文件

我们需要暂存(stage)test文件夹下所有项目文件,输入以下命令:

git add .

最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只需要把特定文件添加到源代码控制中去,我们可以指定它们:

git add my_file,my_other_file

5. 提交文件

现在,我们想要提交已经暂存(staged)的文件。我们提交我们的文件时,总是附带着有意义的注释,描述它们现在的状态。我一直用“initial commit"来描述我的第一个提交的注释。

git commit -m "initial commit"

同样,你随时可以回滚到这个提交状态。如果你需要检查现在已暂存和未暂存文件的状态、提交等,你可以输入以下命令询问git的状态:

git status

6. 创建分支

创建分支是你创建代码独立版本的动作,这个新分支独立于你的主干。默认的,每次你提交到Git的代码都会被存储到”master(主干)”分支。

现在,比如我们想向项目中添加一个功能,但我们又想要能够回滚到现在的版本,为了防止出现差错,或者我们会最终放弃这个功能。这时候,我们就可以创建分支并切换到新建的分支,发送命令:

git checkout -b new_feature

或者先创建一个分支,然后切换

git branch new_feature

git checkout new_feature

要看项目下所有的分支,发送命令:

git branch

现在你可以在你的项目上无所顾忌地做任何你想做的:任何时候,你都可以回到你创建分支前的状态。注意,你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。

7. 合并分支

当我们对新功能满意的时候,我们想要把它加到主干分支上。当我们在的新功能分支上时,我们首先需要加载并且提交文件:

git add .

git commit -m "adds my new feature"

然后移到主干分支:

git checkout master

像这样合并:

git merge new_feature

此时,我们的主干分支和新功能分支会变成一样。

8. 丢弃并删除分支

当我们想要丢弃并删除一个分支时,首先加载我们的文件并且在分支里提交:

git add .

git commit -m "feature to be discarded"

然后,移到主干分支

git checkout master

然后发送删除命令

git branch -d new_featrue

假如修改已经合并了,它只会删除分支。假如分支没有合并,我们会得到一个错误信息。删除一个未合并的分支(通常我们不想保留的修改),我们需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:

git branch -D new_feature

9. 回滚到之前提交的状态

在某些情况下,我们可能想要回到之前的代码版本。首先,我们需要找到想回到到哪个版本。需要查看所有完成的提交,发送命令:

git log

输出提交的历史记录

commit ca82a6dff817ec66f44342007202690a93763949Author: your_username your_email@domain.comDate:   Mon Nov 4 12:52:11 2013 -0700    changes the frontpage layout
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate: Mon Nov 4 11:40:33 2013 -0700 adds my new feature
commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate: Mon Nov 4 10:37:28 2013 -0700 initial commit

如果我们想回到“adds my new feature"这个提交,简单的使用提交的ID做签出(checkout)(通常只用ID的开头9个字母)

git checkout 085bb3bcb

我们也可以签出一个新的分支

git checkout -b my_previous_version 085bb3bcb

只是别太疯狂了!分支越复杂,我们就越难确定我们在做什么。

10. 别名

Git允许我们为常用的命令创建快捷方式(别名)。例如,如果我们不想每次都输入git commit -m “some comment”,而是输入git c “some comment”,我们可以向git全局配置里添加一个别名来实现,像这样:

git config --global alias.c 'commit -m'
这是我使用的别名列表:
git config --global alias.c 'commit -m'
git config --global alias.co 'checkout'
git config --global alias.cob 'checkout -b'
git config --global alias.br 'branch'
git config --global alias.m 'merge'
git config --global alias.a 'add .'
git config --global alias.s 'status'
git config --global alias.dbr 'branch -d'

linux系统下git使用的更多相关文章

  1. 在linux系统下Git源码系统的文件下载

    Git是一个开源的分布式版本控制系统,在linux系统中下载git中的文件使用repo的很多. 网上有很多repo下载的地址失效,目前可用的链接在这里记录一下. 没有安装git的安装一下: sudo ...

  2. linux系统下 git 使用教程

    一.初始化 1.首先安装git软件,安装环境是centos 7.x下的云服务器.使用命令: #yum install git 2.设置用户名和邮箱(必须): # git config --global ...

  3. Linux系统下Git操作命令整理

    1.显示当前的配置信息 git config --list 2. 创建repo从别的地方获取 git clone git://git.kernel.org/pub/scm/git/git.git 自己 ...

  4. linux系统下本地搭建git服务器

    linux系统下如何搭建本地git服务器,用于存放团队的开发代码,如下步骤: 1.先用一台服务器来安装git,安装好linux以后,在这里选用的是Ubuntu 14.04.然后配置静态IP:172.1 ...

  5. Linux系统下安装Gitlab

    Linux系统下安装Gitlab 一.简介 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与 ...

  6. windows 系统下git 的安装

    在linux系统下,可以直接在命令窗口安装和使用git.但是,在windows系统下,想要达到同样的效果,可以安装git,使用git bash到达效果.具体安装步骤如下: 第一步:官网上下载git 网 ...

  7. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  8. Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)

    Vi是Unix及Linux系统下标准的编辑器.学会它后,您将在Linux的世界里畅行无阻.基本上vi可以分为三种状态,分别是命令模式.插入模式,和底行模式. vi编辑器是所有Unix及Linux系统下 ...

  9. linux系统下的权限知识梳理

    下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

随机推荐

  1. linux路由表的配置

    linux路由表的配置 一.原理说明 1.路由表(table)从0到255进行编号,每个编号可以对应一个别名,编号和别名的对应关系在linux下放在/etc/iproute2/rt_tables这个文 ...

  2. 【Python】ORM框架SQLAlchemy的使用

    ORM和SQLAlchemy简介 对象关系映射(Object Relational Mapping,简称ORM),简单的来说,ORM是将数据库中的表与面向对象语言中的类建立了一种对应的关系.然后我们操 ...

  3. java直接访问JNDI工具代码

    import java.sql.*; import java.util.*; import javax.naming.*; import javax.sql.DataSource; public cl ...

  4. java read读取方法 之 指定读取大小,根据返回值判断是否读取所有的内容 -1表示读取完毕

    当读取的内容小于指定的长度时候 字符数组里面会出现一部分字符是上一次遗留下来的情况

  5. table 标签 语法

  6. hdu 3549 Flow Problem (网络最大流)

    Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  7. cf 443 D. Teams Formation](细节模拟题)

    cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...

  8. HDOJ.2111 Saving HDU (贪心)

    Saving HDU 点我挑战题目 题意分析 给出来背包容量v和物品数量n,接下来n行分别给出每个商品单位体积的价值和物品总共的体积(注意是单位体积,不是每个物品).求出最多能装多少价值的物品. 典型 ...

  9. 【链表】在O(1)的时间删除链表的节点

    /** * 在O(1)的时间删除链表的节点 * * @author * */ public class Solution { public static void deleteNode(Node he ...

  10. 【题解】互不侵犯 SCOI 2005 BZOJ 1087 插头dp

    以前没学插头dp的时候觉得这题贼难,根本不会做,学了才发现原来是一裸题. 用二进制表示以前的格子的状态,0表示没放国王,1表示放了国王. 假设当前位置为(x,y),需要记录的是(x-1,y-1)至(x ...