赞
踩
目录
git config
命令用于获取并设置存储库或全局选项。这些变量可以控制 Git 的外观和操作的各个方面。
- git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
-
- git config [<file-option>] [type] --add name value
- git config [<file-option>] [type] --replace-all name value [value_regex]
- git config [<file-option>] [type] [--show-origin] [-z|--null]
- --get name [value_regex]
- git config [<file-option>] [type] [--show-origin] [-z|--null]
- --get-all name [value_regex]
- git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only]
- --get-regexp name_regex [value_regex]
- git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL
- git config [<file-option>] --unset name [value_regex]
- git config [<file-option>] --unset-all name [value_regex]
- git config [<file-option>] --rename-section old_name new_name
- git config [<file-option>] --remove-section name
- git config [<file-option>] [--show-origin] [-z|--null] [--name-only]
- -l | --list
- git config [<file-option>] --get-color name [default]
- git config [<file-option>] --get-colorbool name [stdout-is-tty]
- git config [<file-option>] -e | --edit
查询 / 设置 / 替换 / 取消设置选项。该名称实际上是由点 ( .
) 分隔键,该值将被转义;
--add
将多行添加到选项。更新或取消设置多行可能出现的选项,则需要给出 POSIX 正则表达式 value_regex
;
类型说明符可以是 --int
或 --bool
,以使 git config
确保变量是给定类型,或者 --path
,它进行一些路径扩展。如果没有类型说明符,则不执行检查或转换;
读取时,默认从系统,全局和存储库本地配置文件读取值,而选项--system
,--global
,--local
和--file <filename>
可用于告知命令从只有那个位置设置和读取;
写入时,默认将新值写入存储库本地配置文件,并且可以使用选项--system
,--global
,--file <filename>
来告诉命令写入的位置( 默认值--local
);
错误代码:
代码 | 含义 |
---|---|
0 | 0 成功,非 0 失败 |
1 | 部分或键无效 |
2 | 没有提供部分或名称 |
3 | 配置文件无效 |
4 | 配置文件无法写入 |
5 | 尝试取消设置不存在的选项、尝试取消设置/设置多个行匹配的选项 |
6 | 尝试使用无效的正则表达式 |
/etc/gitconfig
:包含了适用于系统所有用户和所有库的值,通过 —system
读写;
~/.gitconfig
:具体到你的用户,通过 --global
读写;
.git/config
:每个级别重写前一个级别的值。覆盖了在/etc/gitconfig
中的同一个值。
使得 Git 将总是会使用以下信息来处理在系统中所做的一切操作:
- $ git config --global user.name "m"
- $ git config --global user.email "y.com@gmail.com"
若希望在不同项目使用不同信息,则取消 --global 选项。
缺省情况下,Git使用系统的缺省编辑器,通常可能是 vi
或者 vim
,若使用 emacs:
$ git config --global core.editor emacs
缺省的比较工具用来解决合并时的冲突,如使用 vimdff:
$ git config --global merge.tool vimdiff
列出Git可以在该处找到的所有的设置:
- $ git config --list
- # 查看特定值
- $ git config user.name
- $ git config user.email
添加-–add
:
格式:git config [–local|–global|–system] –add section.key value
$ git config -–add site.name y
删除-–unset
:
格式:git config [–local|–global|–system] –unset section.key
$ git config --local -–unset site.name
获得任何 git 命令的手册页(manpage)帮助信息:
- $ git help <verb>
- $ git <verb> --help
- $ man git-<verb>
-
- # 例
- $ git help config
显示有关Git的帮助信息。
- $ git help [-a|--all] [-g|--guide]
- [-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]
--all
/ -a
:标准输出上打印所有可用的命令;
--guide
/ -g
:列出有用的 Git 指南;
git --help ...
与 git help
相同,前者被内部转换为后者;
git help git
:显示 git 手册页。
所有这些配置变量应该使用
--global
标志设置,例如:
$ git config --global help.format web $ git config --global web.browser firefox
创建一个空的 Git 仓库或重新初始化一个现有仓库。
- $ git init [-q | --quiet] [--bare] [--template=<template_directory>]
- [--separate-git-dir <git dir>]
- [--shared[=<permissions>]] [directory]
创建一个具有objects
、refs/head
、refs/tags
和模板文件的 .git
目录,还创建了引用主分支的HEAD
初始的一个HEAD
文件;
如果通过 $GIT_OBJECT_DIRECTORY
环境变量指定了对象存储目录,那么将在下面创建 sha1
目录,否则将使用默认的 $GIT_DIR/objects
目录;
现有存储库中运行git init
命令是安全的。 它不会覆盖已经存在的东西。重新运行git init
的主要原因是拾取新添加的模板(--separate-git-dir
,移动存储库)。
将文件内容添加到索引(将修改添加到暂存区)。也就是将要提交的文件的信息添加到索引库中。
- $ git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
- [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
- [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
- [--chmod=(+|-)x] [--] [<pathspec>…]
将提交的文件信息添加到索引库(修改添加到暂存区),准备为下一次提交分段;通过选项,可以用于添加内容,只对工作树文件进行更改,或删除其中不存在的路径;
多次执行,可将任何新的或修改的文件添加到索引;
默认情况下,git add
不会添加忽略的文件,可以用-f(force)
选项添加被忽略的文件。
git add <path>
的形式把<path>
添加到索引库中,<path>
可以是文件也可以是目录:- $ git add <path>
-
- -A :
- 将所有跟踪文件和所有未跟踪文件添加到索引库
- -u :
- 将所有跟踪文件中添加到索引库
- -i :
- 查看路径中被所有修改过或已删除文件但没有提交的文件,
- 并通过其 revert 子命令可以查看 <path> 中所有未跟踪的文件,同时进入一个子命令系统
.
: 将所有修改添加到暂存区;
*
: Ant 风格添加修改;
*Controller
: 将以 Controller 结尾的文件的所有修改添加到暂存区;
Hello*
: 将所有以Hello开头的文件的修改添加到暂存区;
Hello?
: 将以Hello开头后面只有一位的文件的修改提交到暂存区。
将存储库克隆到新目录中。
- $ git clone [--template=<template_directory>]
- [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
- [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
- [--dissociate] [--separate-git-dir <git dir>]
- [--depth <depth>] [--[no-]single-branch]
- [--recurse-submodules] [--[no-]shallow-submodules]
- [--jobs <n>] [--] <repository> [<directory>]
将存储库克隆到新目录中,为克隆的存储库中的每个分支创建远程跟踪分支,并将存储库作为当前活动分支的初始分支:
git branch -r
可见远程分支
没有参数的 git pull
将会将远程主分支合并到当前主分支;
默认配置通过在 refs/remotes/origin
下创建对远程分支头的引用,并通过初始化 remote.origin.url
和 remote.origin.fetch
配置变量来实现;
- $ git clone http[s]://example.com/repo.git
- $ git clone http://git.oschina.net/sample.git
- $ git clone ssh://repo.git
- $ git clone git://repo.git
- $ git clone /opt/project.git
- $ git clone file://project.git
- $ git clone ftp[s]://repo.git
- $ git clone rsync://repo.git
-
- $ git clone [user@]example.com:path/to/repo.git
通常来说,Git 协议下载速度最快,SSH 协议用于需要用户认证的场合。
git clone -l -s -n . ../copy
$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
用于显示工作目录和暂存区的状态,不显示已经 commit
到项目历史中去的信息。
$ git status [<options>…] [--] [<pathspec>…]
显示索引文件和当前HEAD提交之间的差异;
输出的内容分为3个分类 / 组:
- # Changes to be committed: (已经在stage区, 等待添加到HEAD中的文件)
- # Changes not staged for commit: (有修改, 但是没有被添加到stage区的文件)
- # Untracked files:(没有tracked过的文件, 即从没有add过的文件)
通过 git status -uno
可以只列出所有已经被 git 管理的且被修改但没提交的文件:
$ git status -uno
在一个特殊的文件 .gitignore
中把要忽略的文件放在其中, 每一个想忽略的文件应该独占一行, *
这个符号可以作为通配符使用。
- # 路径
- directoryName
- # 文件
- a.txt
- *.exe
用于显示提交和工作树等之间的更改。此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
- git diff [options] [<commit>] [--] [<path>…]
- git diff [options] --cached [<commit>] [--] [<path>…]
- git diff [options] <commit> <commit> [--] [<path>…]
- git diff [options] <blob> <blob>
- git diff [options] [--no-index] [--] <path> <path>
- git diff <file> # 比较当前文件和暂存区文件差异 git diff
-
- git diff <id1><id1><id2> # 比较两次提交之间的差异
-
- git diff <branch1> <branch2> # 在两个分支之间比较
-
- git diff --staged # 比较暂存区和版本库差异
-
- git diff --cached # 比较暂存区和版本库差异
-
- git diff --stat # 仅仅比较统计信息
- $ git diff # 工作树中的更改尚未分段进行下一次提交
- $ git diff --stat # 查看简单的 diff 结果
- $ git diff --cached # 索引和最后一次提交之间的变化,以及 add 但没有 commit
- $ git diff HEAD # 自上次提交以来工作树中的更改
- $ git diff topic master
- $ #或
- $ git diff topic..master
-
- # master分支上的变更
- $ git diff topic...master
-
- # 查看当前目录和另外一个分支(test)的差别
- $ git diff test
-
- # 显示当前目录下的lib目录和上次提交之间的差别
- $ git diff HEAD -- ./lib
- $ git diff --cached
- $ git diff --staged
- $ git diff HEAD
-
- # 比较上次提交和上上次提交
- $ git diff HEAD^ HEAD
$ git diff SHA1 SHA2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。