git常用命令梳理及常见开发场景总结

一、新建代码库

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 [<选项>] [--] <路径规格>...

你可能感兴趣的:(版本控制,git)