获得和创建项目
pre:
- 索引(index)就是指添加(add)后的文件记录。
- 工作树(working tree)指当前的目录树及其文件。
init
该命令用于创建一个空的仓库或者初始化一个已经存在的仓库。
其会创建一个.git
文件夹,其内部会创建以下子文件:
objects
refs/heads
refs/tags
选项:
-q;--quite
:只打印错误和警告信息;其他的输出都不会被输出。--bare
:创建一个空仓库,如果GIT_DIR
环境变量没有设置,就其将当前工作目录设置。--template=<template-directory>
:指定模板被使用的目录。-b <branch-name>;--initial-branch=<branch-name>
:为新创建的仓库的初始化分支指定指定的名字。(如果没有指定,目前即为master
,后期可能会改变。
通常用法:
1 | git init |
clone
克隆一个仓库到一个新的目录。
将一个存储库克隆到一个新创建的目录中,为克隆存储库中的每个分支创建远程跟踪分支(使用git branch——remotes可见),并创建并签出一个从克隆存储库的当前活动分支分离出来的初始分支。
在克隆之后,没有参数的git fetch
命令将会更新所有的远程分支。没有参数的git pull
将会额外将远程仓库的master
分支合并到当前本地的master
分支。
这个默认配置是通过创建对下面的远程分支头的引用来实现的,refs/remotes/origin
和初始化remote.origin.url
和remote.origin.fetch
。
选项:
-l; --local
:当要被克隆的仓库是一个本地机器,这个标志绕过了正常的“Git感知”传输机制,通过复制objects和refs目录下的HEAD和所有东西来克隆存储库。将创建.git/objects/
目录下的文件硬链接,以尽可能节省空间。--no-hardlinks
:强制克隆过程从本地文件系统的存储库中复制.git/objects
目录下的文件,而不是使用硬链接。-q;--quiet
:静默地运作。进度不会报告给标准错误流。--progress
:默认状态,除非使用了-q
。即所有的状态报告都会被打印出来。-o <name>; --origin <name>
:使用自定义的<name>名字作为远程仓库名字,而不是origin
。本质是重写了配置文件中的clone.defaultRemoteName
项。-b <name>; --branch <name>
:并不是从远程克隆仓库的HEAD
所指向的分支来创建新的本地分支的HEAD
,而是从<name>分支的HEAD
来创建。--depth <depth>
:创建一个浅克隆,其历史截断为指定的提交数量。--single-branch
和--no-single-branch
可以用来获取是否是仓库的所有分支。--shallow-since=<date>
:在指定的时间之后创建具有历史记录的浅拷贝。--shallow-exclude=<revision>
:创建一个具有历史记录的浅克隆,排除从指定的远程分支或标记可到达的提交。此选项可指定多次。<repository>
:要克隆的仓库地址,如:git://git.host.xz/
<directory>
:要克隆到的新目录的位置。
通常用法:
1 | git clone git://git.host.xz/ |