前言
Git 是咱们日常工作中应用频率极高的工具,各种指令让人目迷五色,明天,咱们就在这里总结一下它的一些根本指令,算是做一份操作笔记吧。
根本指令
git add
把要提交的文件的信息增加到暂存区中。当应用 git commit 时,将根据暂存区中的内容来进行文件的提交。
它通常将现有门路的以后内容作为一个整体增加,然而通过一些选项,它也能够用于增加内容,只对所利用的工作树文件进行一些更改,或删除工作树中不存在的门路了。
“索引”保留工作树内容的快照,并且将该快照作为下一个提交的内容。因而,在对工作树进行任何更改之后,并且在运行 git commit
命令之前,必须应用 git add
命令将任何新的或批改的文件增加到索引。
该命令能够在提交之前屡次执行。它只在运行 git add
命令时增加指定文件的内容; 如果心愿随后的更改蕴含在下一个提交中,那么必须再次运行 git add
将新的内容增加到索引。
# 把指定的文件增加到暂存区中
$ git add < 文件门路 >
# 增加所有批改、已删除的文件到暂存区中
$ git add -u [< 文件门路 >]
$ git add --update [< 文件门路 >]
# 增加所有批改、已删除、新增的文件到暂存区中,省略 < 文件门路 > 即为当前目录
$ git add -A [< 文件门路 >]
$ git add --all [< 文件门路 >]
# 查看所有批改、已删除但没有提交的文件,进入一个子命令零碎
$ git add -i [< 文件门路 >]
$ git add --interactive [< 文件门路 >]
git branch
操作 Git 的分支命令。
# 列出本地的所有分支,以后所在分支以 "*" 标出
$ git branch
# 列出本地的所有分支并显示最初一次提交,以后所在分支以 "*" 标出
$ git branch -v
# 创立新分支,新的分支基于上一次提交建设
$ git branch < 分支名 >
# 批改分支名称
# 如果不指定原分支名称则为以后所在分支
$ git branch -m [< 原分支名称 >] < 新的分支名称 >
# 强制批改分支名称
$ git branch -M [< 原分支名称 >] < 新的分支名称 >
# 删除指定的本地分支
$ git branch -d < 分支名称 >
# 强制删除指定的本地分支
$ git branch -D < 分支名称 >
git checkout
更新工作树中的文件以匹配索引或指定树中的版本。如果没有给出门路 – git checkout
还会更新 HEAD
,将指定的分支设置为以后分支。
# 切换到已存在的指定分支
$ git checkout < 分支名称 >
# 创立并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
$ git checkout -b < 分支名称 >
# 创立并切换到指定的分支,删除所有的提交记录
$ git checkout --orphan < 分支名称 >
# 替换掉本地的改变,新增的文件和曾经增加到暂存区的内容不受影响
$ git checkout < 文件门路 >
git checkout
是 git 最罕用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区。
git clone
将存储库克隆到新创建的目录中,为克隆的存储库中的每个分支创立近程跟踪分支(应用 git branch -r
可见),并从克隆检出的存储库作为以后流动分支的初始分支。
# 默认在当前目录下创立和版本库名雷同的文件夹并下载版本到该文件夹下
$ git clone < 近程仓库的网址 >
# 指定本地仓库的目录
$ git clone < 近程仓库的网址 > < 本地目录 >
# -b 指定要克隆的分支,默认是 master 分支
$ git clone < 近程仓库的网址 > -b < 分支名称 > < 本地目录 >
git commit
将索引的以后内容与形容更改的用户和日志音讯一起存储在新的提交中。
# 把暂存区中的文件提交到本地仓库,调用文本编辑器输出该次提交的形容信息
$ git commit
# 把暂存区中的文件提交到本地仓库中并增加形容信息
$ git commit -m "< 提交的形容信息 >"
# 把所有批改、已删除的文件提交到本地仓库中
# 不包含未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "< 提交的形容信息 >"
# 批改上次提交的形容信息
$ git commit --amend
git config
次要是用来配置 Git 的相干参数,其次要操作有:
# 查看配置信息
# --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
Git 一共有 3 个配置文件:
- 仓库级的配置文件:在仓库的
.git/.gitconfig
,该配置文件只对所在的仓库无效。- 全局配置文件:Mac 零碎在
~/.gitconfig
,Windows 零碎在C:\Users\< 用户名 >\.gitconfig
。- 零碎级的配置文件:在 Git 的装置目录下(Mac 零碎下装置目录在
/usr/local/git
)的etc
文件夹中的gitconfig
。
git diff
用于显示提交和工作树等之间的更改。
此命令比拟的是工作目录中以后文件和暂存区域快照之间的差别, 也就是批改之后还没有暂存起来的变动内容。
# 比拟以后文件和暂存区中文件的差别,显示没有暂存起来的更改
$ git diff
# 比拟暂存区中的文件和上次提交时的差别
$ git diff --cached
$ git diff --staged
# 比拟以后文件和上次提交时的差别
$ git diff HEAD
# 查看从指定的版本之后改变的内容
$ git diff <commit ID>
# 比拟两个分支之间的差别
$ git diff < 分支名称 > < 分支名称 >
# 查看两个分支离开后各自的改变内容
$ git diff < 分支名称 >...< 分支名称 >
git fetch
从近程仓库获取最新的版本到本地的 tmp 分支上。
# 将近程仓库所有分支的最新版本全副取回到本地
$ git fetch < 近程仓库的别名 >
# 将近程仓库指定分支的最新版本取回到本地
$ git fetch < 近程主机名 > < 分支名 >
git init
初始化我的项目所在目录,初始化后会在当前目录下呈现一个名为 .git 的目录。
# 初始化本地仓库,在当前目录下生成 .git 文件夹
$ git init
git log
显示提交的记录。
# 打印所有的提交记录
$ git log
# 打印从第一次提交到指定的提交的记录
$ git log <commit ID>
# 打印指定数量的最新提交的记录
$ git log -< 指定的数量 >
git merge
用于将两个或两个以上的开发历史退出 (合并) 一起。
# 把指定的分支合并到以后所在的分支下,并主动进行新的提交
$ git merge < 分支名称 >
# 把指定的分支合并到以后所在的分支下,不进行新的提交
$ git merge --no-commit < 分支名称 >
git mv
重命名文件或者文件夹。
# 重命名指定的文件或者文件夹
$ git mv < 源文件 / 文件夹 > < 指标文件 / 文件夹 >
git pull
从近程仓库获取最新版本并合并到本地。
首先会执行 git fetch
,而后执行 git merge
,把获取的分支的 HEAD 合并到以后分支。
# 从近程仓库获取最新版本。$ git pull
git push
把本地仓库的提交推送到近程仓库。
# 把本地仓库的分支推送到近程仓库的指定分支
$ git push < 近程仓库的别名 > < 本地分支名 >:< 近程分支名 >
# 删除指定的近程仓库的分支
$ git push < 近程仓库的别名 > :< 近程分支名 >
$ git push < 近程仓库的别名 > --delete < 近程分支名 >
git remote
操作近程库。
# 列出曾经存在的近程仓库
$ git remote
# 列出近程仓库的详细信息,在别名前面列出 URL 地址
$ git remote -v
$ git remote --verbose
# 增加近程仓库
$ git remote add < 近程仓库的别名 > < 近程仓库的 URL 地址 >
# 批改近程仓库的别名
$ git remote rename < 原近程仓库的别名 > < 新的别名 >
# 删除指定名称的近程仓库
$ git remote remove < 近程仓库的别名 >
# 批改近程仓库的 URL 地址
$ git remote set-url < 近程仓库的别名 > < 新的近程仓库 URL 地址 >
git reset
还原提交记录。
# 重置暂存区,但文件不受影响
# 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,能够指定文件
# 没有指定 commit ID 则默认为以后 HEAD
$ git reset [< 文件门路 >]
$ git reset --mixed [< 文件门路 >]
# 将 HEAD 的指向扭转,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>
# 将 HEAD 的指向扭转,撤销到指定的提交记录,文件未修改
# 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>
# 将 HEAD 的指向扭转,撤销到指定的提交记录,文件也批改了
$ git reset --hard <commit ID>
git revert
生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。
# 生成一个新的提交来撤销某次提交
$ git revert <commit ID>
git rm
删除文件或者文件夹。
# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
$ git rm < 文件门路 >
# 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
$ git rm -r < 文件夹门路 >
# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached
git status
用于显示工作目录和暂存区的状态。应用此命令能看到那些批改被暂存到了, 哪些没有, 哪些文件没有被 Git tracked 到。
# 查看本地仓库的状态
$ git status
git status
不显示曾经commit
到我的项目历史中去的信息。看我的项目历史的信息要应用
git log
。
git 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
~
~ 本文完,感激浏览!
~
学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!
我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教!
你来,怀揣冀望,我有墨香相迎!你归,无论得失,唯以余韵相赠!
常识与技能并重,内力和外功兼修,实践和实际两手都要抓、两手都要硬!