有两种方法获得一个 git 仓库:自行初始化,克隆别人已有的仓库

自行初始化

git init

克隆别人已有的库

git clone git@github.com:garrisonz/gitStudy.git

和其他版本管理系统不同, Git 的命令是 clone, 而不是 checkout。Git clone 除了拷贝最新版本的文件,还会拷贝服务器上存储的变更历史记录。

在仓库中记录变更历史

工作目录下的文件,可以分为两类:已被跟踪的 (tracked) 、尚未被跟踪的 (untracked)。

已被跟踪的文件又可以分三种状态: Unmodified, Modified, Staged。Unmodified 其实也就是 commited。

检查项目的状况使用下面的命令。这是一个很有用的命令,在不同状态下提示不同的信息,指引你如何做下一步。

git status

使用 add 命令可以把文件从未被跟踪,改为已被跟踪状态。

$ echo 'tony' > .txt
$ git add .txt

add 是一个多功能命令,有下面几种

  • 开始追踪文件
  • 把文件放到 stage area
  • 把合并冲突的文件标识为已解决状态

可以把 add 理解为 "把这些内容加入到下一次 commit "。把一个修改过的文件放到 tage area 后,再做一次修改,这时该文件会有两个版本:modified 和 staged。如果此时做 commit ,只会提交 staged 版本的文件。

忽略文件

.gitignore 用于配置需要忽略的文件。配置规则如下

  • 忽略空行或者 # 开头的行
  • 接收标准 glob 模式匹配
  • 前斜杠 / 开始,避免全部目录遍历
  • 前斜杠 / 结尾,表明是一个目录
  • 感叹号 ! 开始,表示取反

介绍下 glob 模式匹配。这像是一个简化的正则匹配。

  • * 匹配零个或多个字符
  • ? 匹配一个字符
  • [abc] 匹配中括号中的任何一个字符(此处为 a 或 b 或 c )
  • [0-9] 匹配范围内的值(此处为 0 至 9 任何一个字符)

差异

git diff 显示已被修改但没放到 stage area 的变动,git diff --staged 显示已放到 staged area 但没有 commit 的变动。强调一下, git diff 并不显示所有没有被 commit 的变动,而是只显示还没有被放到 stage area 的变动。

$ git diff
$ git diff --staged

提交变动到库

把 stage area 里面的变更提交库中,使用下面命令

$ git commit -m 'fix iss54'

下面命令跳过 stage area (git add) 步骤,直接把所有已追踪的文件的全部变更提交到仓库中。

$ git commit -m 'fix iss54' .
$ git commit -a -m 'fix iss54' 

删除文件,并从 staging ara 中删除历史记录和追踪,使用下面命令:

$ git rm <fileName>

希望 git 不用再追踪该文件,但在目录中保留该文件,则使用下面的命令

$ git rm --cached <fileName>

查看历史记录

git log 用于查看历史记录,选项 -[n] 表示查看最近的前 n 条记录。--stat 会显示历史声明,显示具体修改了的文件名。推荐使用 Eclipse 上的 egit 插件查看历史记录。

$ git log -3 --stat

撤销操作

在不同状态需要撤销不同的操作时,可以参考 git status 的提示来进行。例如,需要撤销 modified 的文件或者 staged 的文件,根据 git status 的提示进行即可。撤销操作有危险,撤销的变更无法再复现,谨慎使用。

远程库

git remote 会显示远程服务器名,-v 选项显示远程服务器名和 URL 的读、写匹配。

$ git remote
$ git remote -v

添加一个远程服务器的命令

$ git remote add myfork git@github.com:garrisonz/bootstrap.git

获取远程服务器的数据的命令。fetch 命令只会从远程服务器中下载数据,但是不会把变更合并到当前的工作目录,需要手动进行合并 (merge)。 pull 命令相当于 fetch + merge。当项目有多个分支时,推荐自行 fetch 然后 merge.

$ git fetch myfork

推送代码到远程服务器

git push [remote-server] [remote-branch]

删除远程服务。例如在 git 仓库中删除一个名为 myfork 的远程服务器

git remote rm myfork

打标签 (Tag)

git 和大多数版本管理系统一样,可以给指定的历史顺序打上标签。一般给发布的版本打上标签,如 v1.0。打标签有两种类类型: 轻量型和声明型。

轻量型标签,是一个指向特定的 commit 记录的指针。

$ git tag v0.

声明性标签,除了有指向特定的 commit 记录指针外,还会存储更多额外信息。推荐使用。

$ git tag -a v1. -m 'the stable v1.0 version'

需要签出指定的标签版本

$ git checkout -b version1 v1.

命令别名

定义别名是为了减少敲打键盘的动作,为了方便记忆,保持打字节奏,我把别名都设置为三个字符。

$ git config --global alias.cot checkout
$ git config --global alias.brh branch
$ git config --global alias.cmt commit
$ git config --global alias.sts status

参考资料

Chapter 2, Git Basics, git-scm

[git] git 的基础功能的更多相关文章

  1. Git Pro - (1) 基础

    近乎所有操作都可本地执行 在Git中的绝大多数操作都只需要访问本地文件和资源,不用连网. 三种状态 对于任何一个文件,在 Git 内都只有三 种状态:已提交(committed),已修改(modifi ...

  2. Git的常见基础操作命令

    Git的常见基础操作命令 1安装初始化 1.1安装git本地安装Windows版本 下载地址: https://git-scm.com/downloads/ 1.2初始化Git用户信息配置 配置git ...

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

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

  4. Git的杀手级功能之 一 远程仓库

    Git的杀手级功能之一:远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. 一.注册GitHub账号,然后和本地Git仓库来关联免费获得Git远程仓库来学校git的远程仓 ...

  5. Git操作(基础篇)

    Git操作(基础篇) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/gɪt/.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常 ...

  6. git 使用教程 --基础二

    一:分支学习: branch称为分支,默认仅有一个名为master的分支.一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支. 分支的作用: 创建分支:(创建分 ...

  7. Git学习笔记----基础运用

    安装Git Windows: 进入官网下载或百度网盘下载 Git(V2.23_x64) 提取码:uf2x Ubuntu: sudo apt-get -install git 安装完成之后打开git命令 ...

  8. Git工具使用基础

    Git 是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分 ...

  9. git学习记录——基础概念和文件的基本操作

    夸一下git git是当前世界上最先进的分布式版本控制系统 优势: 1.不必联网 2.Git极其强大的分支管理,把SVN等远远抛在了后面. 集中式的代表CVS和SVN 分布式的代表BitKeeper, ...

  10. Git 升级与基础适用

    Git 升级 老方法 yum install git 目前centos6安装的 git 版本为1.7相对于 github 以及自己安装的 git 服务器都相对比较老,所以一般不适用此方法安装) 编译安 ...

随机推荐

  1. SQL Server2008 附加数据库失败 错误代码5120

    由于目录权限不够导致 ,解决办法:将文件所在的文件夹增加everyone 并且赋予完全控制权限问题解决

  2. qrcode.js插件将你的内容转换成二维码格式

    ---qrcode.js插件将你的内容转换成二维码格式--- 我之前一直想知道二维码是怎么生成,所以就了解了一下, 最后还是不知道它的原理, 但是,我知道怎么生成. 现在就让我带你制作一个你喜爱的二维 ...

  3. laravel学习:修改时区

    config/app.php 'timezone' => 'UTC', 改为 'timezone' => 'PRC',

  4. Type 类型

    修改 type 类型 UPDATE  wd_order2 SET  info = array_append(info, row(2,100001, now() )::info )  WHERE id_ ...

  5. FreeRTOS随记

    任务函数原型: void ATaskFunction(void * pvParameters); 任务不允许从实现函数中返回.如果一个任务不再需要,可以用vTaskDelete()删除; 一个任务函数 ...

  6. C# Winform C/S系统快速开发平台(源码+原创)

    C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4.0.htm 适用软件:适合开 ...

  7. "git add -A" is equivalent to "git add .; git add -u".

    git add -A stages All git add . stages new and modified, without deleted git add -u stages modified ...

  8. 2016030201 - github上创建项目

    具体步骤如下: 前提是你已经由github账户,登陆你的账户后 步骤1:点击右下角+new repository 2.添加代码库描述内容,比如reposltory name 例如我创建的内容 3.点击 ...

  9. 高性能页面加载技术(流水线加载)BigPipe的C#简单实现(附源码)

    一,BigPipe简介 BigPipe是一个重新设计的基础动态网页服务体系.大体思路是,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行.这是类似于 ...

  10. Park Visit

    hdu4607:http://acm.hdu.edu.cn/showproblem.php?pid=4607 题意:给你一棵树,树上每条边的权值是1,然后然你选择m个点,求遍历m个点的最小花费. 题解 ...