常用git命令大全
Posted 我是真的不会前端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用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 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
获取配置项
$ git config <–local | --global | --system> --get
删除配置项
$ git config <–local | --global | --system> --unset
配置提交记录中的用户信息
$ 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
比较两个分支之间的差异
$ git diff <分支名称> <分支名称>
查看两个分支分开后各自的改动内容
$ git diff <分支名称>…<分支名称>
git fetch
从远程仓库获取最新的版本到本地的 tmp 分支上。
将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>
将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>
git init
初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。
初始化本地仓库,在当前目录下生成 .git 文件夹
$ git init
复制代码
git log
显示提交的记录。
打印所有的提交记录
$ git log
打印从第一次提交到指定的提交的记录
$ git log
打印指定数量的最新提交的记录
$ 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
$ git reset --mixed
将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
相当于调用 “git reset --mixed” 命令后又做了一次 “git add”
$ git reset --soft
将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard
复制代码
git revert
生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。
生成一个新的提交来撤销某次提交
$ git revert
复制代码
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 <标签名称> []
添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> []
切换到指定的标签
$ git checkout <标签名称>
查看标签的信息
$ git show <标签名称>
删除指定的标签
$ git tag -d <标签名称>
将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>
将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> –tags
git stash
把当前的改动压入一个栈.
git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处.
git stash lis
会显示这个栈的list.
git stash apply
取出stash中的上一个项目(stash@0),并且应用于当前的工作目录.
也可以指定别的项目,比如git stash apply stash@1.
如果你在应用stash中项目的同时想要删除它,可以用gitstash pop
删除stash中的项目
git stash drop:
删除上一个,也可指定参数删除指定的一个项目.
git stash clear:
删除所有项目.
git rebase
–rebase不会产生合并的提交,它会将本地的所有提交临时保存为补丁(patch),放在”.git/rebase”目录中,然后将当前分支更新到最新的分支尖端,最后把保存的补丁应用到分支上.
rebase的过程中,也许会出现冲突,Git会停止rebase并让你解决冲突,在解决完冲突之后,用git add去更新这些内容,然后无需执行commit,只需要:
git rebase --continue
就会继续打余下的补丁.
git rebase --abort
将会终止rebase,当前分支将会回到rebase之前的状态.
git reflog
git reflog是对reflog进行管理的命令,reflog是git用来记录引用变化的一种机制,比如记录分支的变化或者是HEAD引用的变化.
当git reflog不指定引用的时候,默认列出HEAD的reflog.
HEAD@0代表HEAD当前的值,HEAD@3代表HEAD在3次变化之前的值.
git会将变化记录到HEAD对应的reflog文件中,其路径为.git/logs/HEAD, 分支的reflog文件都放在.git/logs/refs目录下的子目录中.
以上是关于常用git命令大全的主要内容,如果未能解决你的问题,请参考以下文章