克隆/初始化(创建)
clone
# 默认会在目录下创建版本库
git clone <远程仓库的网址>
# 可以指定本地仓库的路径
git clone <远程仓库的网址> <本地目录>
# 默认主分支(master)
git clone -b <分支名称> <远程仓库的网址> <本地目录>
init
# 初始化本地仓库,正常情况下会生成.git的隐藏目录
git init
状态/日志
status
# 检查当前版本库状态
git status
# 以简略形式查看本地状态
git status -s
log
# 查看所有提交记录
git log
# 查看指定范围内的提交记录(从第一条到指定条)
git log <提交记录编号>
# 查看指定条数(n为一个数字,代表要查看几条)
git log -n
# 查看指定
show
# 查看提交的详细信息(如果编号不重复,可以使用前几位代表全部)
git show <提交记录编号>
差异
diff
# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
git diff
# 比较暂存区中的文件和上次提交时的差异
git diff --cached
git diff --staged
# 比较当前文件和上次提交时的差异
git diff HEAD
# 查看从指定的版本之后改动的内容
git diff <commit ID>
# 比较两个分支之间的差异
git diff <分支名称> <分支名称>
# 查看两个分支分开后各自的改动内容
git diff <分支名称>...<分支名称>
远程服务
remote
# 列出已经存在的远程仓库
git remote
# 列出远程仓库的详细信息,在别名后面列出URL地址
git remote -v
# 添加远程仓库
git remote add <远程仓库的别名> <远程仓库的URL地址>
# 修改远程仓库的别名
git remote rename <原远程仓库的别名> <新的别名>
# 删除指定名称的远程仓库
git remote remove <远程仓库的别名>
# 修改远程仓库的 URL 地址
git remote set-url <远程仓库的别名> <新的远程仓库URL地址>
分支/标签/合并
branch
# 列出本地的所有分支,当前所在分支以 "*" 标出
git branch
# 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
git branch -v
# 创建新分支,新的分支基于上一次提交建立
git branch <分支名>
# 修改分支名称
# 如果不指定原分支名称则为当前所在分支
git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
git branch -M [<原分支名称>] <新的分支名称>
# 删除指定的本地分支
git branch -d <分支名称>
# 强制删除指定的本地分支
git branch -D <分支名称>
checkout
# 切换到已存在的指定分支
git checkout <分支名称>
# 创建并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
git checkout -b <分支名称>
# 创建并切换到指定的分支,删除所有的提交记录
git checkout --orphan <分支名称>
# 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
git checkout <文件路径>
tag
# 打印所有的标签
git tag
# 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
git tag <标签名称> [<commit ID>]
# 添加带有描述信息的附注标签,可以指定之前的提交记录
git tag -a <标签名称> -m <标签描述信息> [<commit ID>]
# 切换到指定的标签
git checkout <标签名称>
# 查看标签的信息
git show <标签名称>
# 删除指定的标签
git tag -d <标签名称>
# 将指定的标签提交到远程仓库
git push <远程仓库的别名> <标签名称>
# 将本地所有的标签全部提交到远程仓库
git push <远程仓库的别名> –tags
merge
# 把指定的分支合并到当前所在的分支下
git merge <分支>
更新/推送/提交
fetch
# 将远程仓库所有分支的最新版本全部取回到本地
git fetch <远程仓库的别名>
# 将远程仓库指定分支的最新版本取回到本地
git fetch <远程主机名> <分支名>
pull
# 从远程仓库拉去并合并,相当于fetch + merge
git pull
push
# 将改动推送到远程仓库
git push
# 把本地仓库的分支推送到远程仓库的指定分支
git push <远程仓库的别名> <本地分支名>:<远程分支名>
# 删除指定的远程仓库的分支
git push <远程仓库的别名> :<远程分支名>
git push <远程仓库的别名> --delete <远程分支名>
commit
# 将改动提交到本地仓库
# 把暂存区中的文件提交到本地仓库,会自动打开文本编辑器要求输入提交信息
$ git commit
# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"
# 把所有修改、已删除的文件提交到本地仓库中
# 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "<提交的描述信息>"
# 修改上次提交的描述信息
$ git commit --amend
添加/修改/删除
add
# 把指定的文件添加到暂存区中
git add <文件路径>
# 添加所有修改、已删除的文件到暂存区中
git add -u [<文件路径>]
git add --update [<文件路径>]
# 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
git add -A [<文件路径>]
git add --all [<文件路径>]
# 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
git add -i [<文件路径>]
git add --interactive [<文件路径>]
mv
# 重命名指定的文件或者文件夹
git mv <源文件/文件夹> <目标文件/文件夹>
rm
# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
git rm <文件路径>
# 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
git rm -r <文件夹路径>
# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
git rm --cached
配置文件
config
# 查看配置信息
# --local:仓库级,--global:全局级,--system:系统级
git config <--local | --global | --system> -l
# 查看当前生效的配置信息
git config -l
# 编辑配置文件
# --local:仓库级,--global:全局级,--system:系统级
git config <--local | --global | --system> -e
# 添加配置项
# --local:仓库级,--global:全局级,--system:系统级
git config <--local | --global | --system> --add <name> <value>
# 获取配置项
git config <--local | --global | --system> --get <name>
# 删除配置项
git config <--local | --global | --system> --unset <name>
# 配置提交记录中的用户信息
git config --global user.name <用户名>
git config --global user.email <邮箱地址>
# 更改Git缓存区的大小
# 如果提交的内容较大,默认缓存较小,提交会失败
# 缓存大小单位:B,例如:524288000(500MB)
git config --global http.postBuffer <缓存大小>
# 调用 git status/git diff 命令时以高亮或彩色方式显示改动状态
git config --global color.ui true
# 配置可以缓存密码,默认缓存时间15分钟
git config --global credential.helper cache
# 配置密码的缓存时间
# 缓存时间单位:秒
git config --global credential.helper 'cache --timeout=<缓存时间>'
# 配置长期存储密码
git config --global credential.helper store
参与讨论
(Participate in the discussion)
参与讨论