Git是一款常用的版本控制工具,之前将一些基本命令都放在了另一篇Blog中,发现用一些git命令的时候很不方便,故此抽离出来
关联篇
- Git指南 - 你该掌握的那些基础认知和首次配置
- Git指南 - 项目实战中天天用的那些基础命令
- Git指南 - 通过规范使用Git来证明你是一个牛牛
- Git指南 - 我经常遇到的那些项目实战场景
- Git项目实战 - 我遇到的那些Git问题是这么解决的
全篇均为git命令,以下的大部分命令,我在实战开发中基本都有使用过(直接Ctrl + F 搜索)
Git 配置
查看配置
查看 config
整体信息
#查看所有配置信息,包含系统、用户、项目三层的配置信息
git config -l
#查看系统config
git config --system --list 或 git config --system --l
#查看当前用户(global)配置
git config --global --list 或 git config --global --l
#查看当前仓库配置信息
git config --local --list 或 git config --local --l
查看 config
指定信息
#查看git版本
git –version
#获取当前用户名称
git config –global user.name
#获取当前用户邮箱
git config –global user.email
增、删配置
- 添加配置项
git config [--local|--global|--system] section.key value
#可选的,对应本地,全局,系统不同级别的设置
[--local|--global|--system]
#区域下的键
section.key
#对应的值
value
--local 项目级
--global 当前用户级
--system 系统级
#示例语句 - 更好git用户信息中的用户名
git config --global user.name laosan
- 删除配置项
git config [--local|--global|--system] --unset section.key
更多配置
git config --global color.ui true #打开所有的默认终端着色
git config --global alias.ci commit #别名 ci 是commit的别名
[alias]
co = checkout
ci = commit
st = status
pl = pull
ps = push
dt = difftool
l = log --stat
cp = cherry-pick
ca = commit -a
b = branch
user.name #用户名
user.email #邮箱
core.editor #文本编辑器
merge.tool #差异分析工具
core.paper "less -N" #配置显示方式
color.diff true #diff颜色配置
alias.co checkout #设置别名
git config user.name #获得用户名
git config core.filemode false #忽略修改权限的文件
设置用户信息
主要有俩种设置场景
统一配置
用户信息,主要采用 –global 全局配置
的操作命令不同项目指定用户信息
不同,减去 –global 全局配置
的操作命令
统一配置 - 用户信息
# 设置当前登录的用户名称
git config –-global user.name "Your Name"
# 设置当前登录的用户邮箱
git config –-global user.email "[email protected]"
# 以下俩条可以选择性忽略(设置 git命令的别名)> <
# 设置git命令的别名
git config --global alias.ci commit
# 设置git命令的别名
git config --global alias.co checkout
拉新项目
场景:本地无项目,首次从远端拉项目到本地
git init //初始化(将当前目录变为仓库)
git clone 网站上的仓库地址 //从远程库克隆到本地
场景:先有本地库,后有远程库,将本地库push到远程库
关联本地库和远程库:
git remote add origin 网站仓库地址
第一次将本地仓库推送到远程仓库
git push -u origin master
基础命令
git status #刷新代码当前状态
git add -u #提交已修改
git add 文件名 #添加一个文件到暂存区
git add . #添加所有文件到暂存区
git add -A #将本地所有改动添加到暂存区(git add -A = git add . + git add -u)
git commit -m"备注" #备注
git pull #拉取远程代码
git diff #对比暂存区和工作区差异
git push #推送
git checkout –文件名 #撤销工作区的修改
git log - 期望条目(数字)#查看近期log,如git log -3就是查看近期提交的3条commit信息
git log #查看所有log
git tag #查看所有标签
git merge dev #将dev分支合并到当前所在分支上
git fetch #从远程获取最新版本到本地,不会自动merge
分支命令
git branch 你的分支名 #创建新分支
git branch -m <old> <new> #本地分支重命名
git checout 你的分支名 #切换分支
git checkout -b 你的分支名 #创建新分支同时进行分支切换
git branch -l #只查看本地分支 (l-location)
git branch -r #只查看远程分支
git branch -a #查看所有分支
git branch -vv #查看当前的本地分支绑定的远端的那一条分支
git branch -b test origin/test #将远程分支test拉取到本地,并新建分支test(如果失败,可以先运行 git fetch,如下)
git pull origin test (远程分支名称) #把远程分支上的内容都拉取到本地
git fetch origin develop(develop为远程仓库的分支名)
git push origin test #将本地test分支推送到远程 (不能直接新建远程分支,需要新建本地分支后,再把本地分支推送到远程)
git push origin test:master #提交本地test分支作为远程master分支
git push origin test:test #提交本地test分支作为远程test分支
git push origin :test #提交空分支作为远程test分支(相当于删除远程test分支)
git remote show origin #查看远程库的一些信息,及与本地分支的信息
git pull --rebase #暂存本地变更,合并远程最新改动,合并刚刚暂存的本地变更(不产生无用的merge的同步)
git push --all origin # 将所有本地分支都推送到origin主
git fetch -p #删除掉没有与远程分支对应的本地分支
git fetch origin -p #用来清除已经没有远程信息的分支,这样git branch -a 就不会拉取远程已经删除的分支了
------删除分支-----
git branch -d 分支名 #删除分支
git branch -d test #删除本地test分支
git branch -D test #强制删除本地test分支
git push origin --delete test #删除远程test分支
进阶命令
git remote -v #查看远程仓库
git remote rm orgin #删除远程仓库(慎用)
git reset HEAD 文件名 #撤销暂存区的修改
git reset --hard HEAD^ #回退到上个版本(撤销暂存区全部修改)
git reset --hard 该版本ID #回退到历史版本
git reflog #查看以往版本号(本地的commit)
git status -s #将结果以简短的形式输出
git status --ignored #显示被忽略的文件
git log -p # 查看详细修改内容
git log --stat #查看提交统计信息
git log --graph # 显示何时出现了分支和合并等信息
git commit -a #把修改的文件添加到暂存区(不包括新建(untracked)的文件),然后提交
git commit --amend #修改提交的commit(没有push)
git commit --amend -m "comment" #修改commit注解
diff 命令
git diff –cached #对比暂存区和工作区差异
git diff master #对比历史区和工作区差异
git diff --cached #查看暂存起来的文件(stage)与并未提交(commit)的差别
git diff --staged #同上
git diff HEAD #查看最后一次提交之后的的差别(HEAD代表最近一次commit的信息)
git diff --stat #查看显示简略结果(文件列表)
git diff commit1 commit2 #对比两次提交的内容(也可以是branch,哈希值)
Tag标签命令
一般在某个版本下进行tag标记,做节点使用
git tag 标签名 #为当前版本打标签
git tag 标签名 #为历史版本打标签
git tag -a 标签名 -m “标签说明” #指定标签说明
git show 标签名 #查看某一个标签
git tag-d 标签名 #删除某一个标签
git tag -a v1.0.0 -m ‘版本说明’ #打tag
git push origin –tags #将所有tag推送到远端(前提是add、commit、push后)
git push origin tag名称 #将指定tag推送到远端
git tag -d tag名称 #删除本地标签
git push origin : refs/tags/tag名称 #删除远端标签
其余命令
较少使用的命令
git add -i #打开一个交互式界面按需求添加文件
git rm <file> #删除文件
git rm -r <floder> #删除文件夹
git rm --cached <file> #从版本库中删除文件,但不删除文件
git mv <old_name> <new_name> #文件重命名
git push -u origin master # -u指定origin为默认主机,后面就可以不加任何参数使用git push了
git push -f origin # -f强推,在远程主机产生一个"非直进式"的合并(non-fast-forward merge)