一、新建代码库
1.git clone用法:git clone [<选项>] [–] <仓库> [<路径>]
# 用法:git clone [<选项>] [--] <仓库> [<路径>]
-v, --verbose #更加详细
-q, --quiet #更加安静
--progress #强制显示进度报告
-n, --no-checkout #不创建一个检出
--bare #创建一个纯仓库
--mirror #创建一个镜像仓库(也是纯仓库)
-l, --local #从本地仓库克隆
--no-hardlinks #不使用本地硬链接,始终复制
-s, --shared #设置为共享仓库
--recurse-submodules[=<路径规格>] #在克隆时初始化子模组
--recursive ... --recurse-submodules #别名
-j, --jobs #并发克隆的子模组的数量
--template <模板目录> #模板目录将被使用
--reference <仓库> #参考仓库
--reference-if-able <仓库> #参考仓库
--dissociate #仅在克隆时参考 --reference 指向的本地仓库
-o, --origin <名称> #使用 <名称> 而不是 'origin' 去跟踪上游
-b, --branch <分支> #检出 <分支> 而不是远程 HEAD
-u, --upload-pack <路径> #远程 git-upload-pack 路径
--depth <深度> #创建一个指定深度的浅克隆
--shallow-since <时间> #从一个特定时间创建一个浅克隆
--shallow-exclude <版本>#深化浅克隆的历史,除了特定版本
--single-branch #只克隆一个分支、HEAD 或 --branch
--no-tags #不要克隆任何标签,并且后续获取操作也不下载它们
--shallow-submodules #子模组将以浅下载模式克隆
--separate-git-dir #git目录和工作区分离
-c, --config #在新仓库中设置配置信息
--server-option #传输选项
-4, --ipv4 #只使用 IPv4 地址
-6, --ipv6 #只使用 IPv6 地址
--filter <参数> #对象过滤
--remote-submodules #任何克隆的子模组将使用它们的远程跟踪分支
--sparse #初始化稀疏检出文件,只包含根目录文件
# 下载一个项目和它的整个代码历史
$ git clone [url]
#clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定.
$ git clone [url] newname
2.git init 用法:git init [-q | --quiet] [–bare] [–template=] [–shared[=]][]
git init [-q | --quiet] [--bare] [--template=] [--shared[=]][]
#将使用模板的目录/ directory from which templates will be used
--template
#创建一个空仓库/create a bare repository
--bare
#指定 git 存储库将在多个用户之间共享/specify that the git repository is to be shared amongst several users
--shared[=]
#安静/be quiet
-q, --quiet
#将 git dir 与工作树分开/separate git dir from working tree
--separate-git-dir
#覆盖初始分支的名称/override the name of the initial branch
-b, --initial-branch
#指定要使用的哈希算法/specify the hash algorithm to use
--object-format
# git-init - 创建一个空的 Git 存储库或重新初始化一个现有的存储库
$ git init
# 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.
$ git init [project-name]
$ git init repo
二、配置
1.git config 用法:git config [<选项>]
#用法:git config [<选项>]
#配置文件位置
--global #使用全局配置文件
--system #使用系统级配置文件
--local #使用仓库级配置文件
--worktree #使用工作区级别的配置文件
-f, --file <文件> #使用指定的配置文件
--blob <数据对象 ID> #从给定的数据对象读取配置
#操作
--get #获取值:name [value-regex]
--get-all #获得所有的值:key [value-regex]
--get-regexp #根据正则表达式获得值:name-regex [value-regex]
--get-urlmatch #获得 URL 取值:section[.var] URL
--replace-all #替换所有匹配的变量:name value [value_regex]
--add #添加一个新的变量:name value
--unset #删除一个变量:name [value-regex]
--unset-all #删除所有匹配项:name [value-regex]
--rename-section #重命名小节:old-name new-name
--remove-section #删除一个小节:name
-l, --list #列出所有
-e, --edit #打开一个编辑器
--get-color #获得配置的颜色:配置 [默认]
--get-colorbool #获得颜色设置:配置 [stdout-is-tty]
#类型
-t, --type <> #取值为该类型
--bool #值是 "true" 或 "false"
--int #值是十进制数
--bool-or-int #值是 --bool or --int
--path #值是一个路径(文件或目录名)
--expiry-date #值是一个到期日期
#其它
-z, --null #终止值是 NUL 字节
--name-only #只显示变量名
--includes #查询时参照 include 指令递归查找
--show-origin #显示配置的来源(文件、标准输入、数据对象,或命令行)
--show-scope #显示配置的作用域(工作区、本地、全局、系统、命令)
--default <取值> #使用 --get 参数,当缺少设置时使用默认值
#Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
# 显示当前的Git配置
$ git config --list
# 编辑Git配置文件
$ git config -e --global
# 设置提交代码时的用户信息
$ git config --global user.name "[name]"
$ git config --global user.email "[email address]"
三、增加/删除文件
1.git add 用法:git add [<选项>] [–] <路径规格>…
#用法:git add [<选项>] [--] <路径规格>...
-n, --dry-run #演习
-v, --verbose #冗长输出
-i, --interactive #交互式拣选
-p, --patch #交互式挑选数据块
-e, --edit #编辑当前差异并应用
-f, --force #允许添加忽略的文件
-u, --update #更新已跟踪的文件
--renormalize #对已跟踪文件(暗含 -u)重新归一换行符
-N, --intent-to-add #只记录,该路径稍后再添加
-A, --all #添加所有改变的已跟踪文件和未跟踪文件
--ignore-removal #忽略工作区中移除的路径(和 --no-all 相同)
--refresh #不添加,只刷新索引
--ignore-errors #跳过因出错不能添加的文件
--ignore-missing #检查在演习模式下文件(即使不存在)是否被忽略
--chmod (+|-)x #覆盖列表里文件的可执行位
--pathspec-from-file <文件> #从文件读取路径表达式
--pathspec-file-nul #使用 --pathspec-from-file,路径表达式用空字符分隔
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区,会递归地添加当前工作目录中的所有文件.
$ git add .
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p
2.git rm 用法:git rm [<选项>] [–] <文件>…
#用法:git rm [<选项>] [--] <文件>...
-n, --dry-run #演习
-q, --quiet #不列出删除的文件
--cached #只从索引区删除
-f, --force #忽略文件更新状态检查
-r #允许递归删除
--ignore-unmatch #即使没有匹配,也以零状态退出
--pathspec-from-file <文件> #从文件读取路径表达式
--pathspec-file-nul #使用 --pathspec-from-file,路径表达式用空字符分隔
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
# 改名文件,并且将这个改名放入暂存区
3.git mv 用法:git mv [<选项>] <源>… <目标>
#用法:git mv [<选项>] <源>... <目标>
-v, --verbose #冗长输出
-n, --dry-run #演习
-f, --force #强制移动/重命令,即使目标存在
-k #跳过移动/重命名错误
$ git mv [file -original] [file -renamed ="token punctuation"]
4.git clean 用法:git clean [-d] [-f] [-i] [-n] [-q] [-e <模式>] [-x | -X] [–] <路径>…
#用法:git clean [-d] [-f] [-i] [-n] [-q] [-e <模式>] [-x | -X] [--] <路径>...
-q, --quiet #不打印删除文件的名称
-n, --dry-run #演习
-f, --force #强制
-i, --interactive #交互式清除
-d #删除整个目录
-e, --exclude <模式> #添加 <模式> 到忽略规则
-x #也删除忽略的文件
-X #只删除忽略的文件
#从工作目录中移除没有追踪的文件.
$ git clean -df
-d表示同时移除目录,-f表示force,因为在git的配置文件中,clean.requireForce=true,如果不加-f,clean将会拒绝执行.
四、代码提交
1.git commit 用法:git commit [<选项>] [–] <路径规格>…
#用法:git commit [<选项>] [--] <路径规格>...