导图社区 Git命令
初学git, 总结了一下常用的git命令, 仅供参考
编辑于2020-03-08 12:08:07Git命令
配置
全局用户名 git config --global user.name "用户名"
子主题
全局邮箱 git config --global user.email "邮箱"
gitbash颜色 git config --global color.ui true
忽略文件
编写.gitignore文件, commit到版本库中
强制取消忽略并加入暂存区(.gitignore文件不改变) git add -f 文件名
.gitignore错误忽略了,检查方法: git check-ignore -v 被错误忽略的文件名
设置别名 git config --global alias.别名 "原名"
修改配置
全局配置 修改用户目录下的gitconfig文件
仓库级配置 修改.git/config
解除配置 git config <--global> --unset <原命令>
基本操作
在当前位置创建仓库 git init
git init
提交
工作区提交到暂存区
提交单一文件 git add 文件名
提交所有文件 git add .
暂存区提交到版本库
提交所有文件 git commit -m "说明信息"
工作区直接提交到版本库
git -a -m "说明文字" 文件名
查看
提交历史
本分支提交历史
详情 git log
简介 git log --pretty=oneline
显示分支图谱 git log --graph --pretty=oneline --abbrev-commit
显示具体修改 git log -p
所有分支历史 git reflog
文件状态 git status
查看差异
工作区和暂存区 git diff
工作区和版本库 git diff HEAD
暂存区和版本库 git diff --cached
查看文件内容 cat 文件名
查看所有文件 dir
回退和撤销
版本库回退(三者同步)
特定版本 git reset--hard <commit id>
上一个版本 git reset --hard HEAD^
上n个版本 git reset --hard HEAD~n
撤销工作区修改 git checkout -- 文件名
回退成暂存区或版本库
git checkout -- 文件名
撤销暂存区的修改 git reset HEAD -- 文件名
删除文件
从工作区中删除 rm 文件名
删除并提交到暂存区 git rm 文件名
现场
保存现场(回到了最近提交的版本号) git stash
查看现场列表 git stash list
恢复现场
仅恢复 git stash apply <现场名>
恢复+删除 git stash pop <现场名>
删除现场 git stash drop <现场名>
分支管理
创建分支
仅创建 git branch 分支名
创建+切换 git checkout -b 分支名 创建+切换 git switch -c 分支名
克隆远程分支+切换 git switch -c <本地分支名> <远仓名/远程分支名>
切换分支 git checkout 分支名 切换分支 git switch 分支名
推送分支
推送当前分支到关联的远程分支 git push
推送当前分支到特定的远程分支 git push< 远仓名> <远程分支名>
推送特定分支到特定的远程分支 git push <远仓名> <远程分支名>:<本地分支名>
推送失败(远程分支已有新提交)
合并分支
本地分支
(推荐)递归三路合并 git merge --no-ff -m "备注信息" 分支名
快速合并 git merge 分支名
变基合并 git rebase 分支名
冲突
继续合并 修改文件 + git add + git rebase --continue
停止合并 git rebase --abort
更新本地的远程分支, 并将其合并到本地同名分支
git pull
未关联
冲突(无法和远程分支新提交合并)
修改冲突文件+add+commit
语法: git pull →将当前分支关联的远程分支fetch下来, 和当前分支merge git pull origin A →将远程分支A fetch下来, 和当前分支merge git pull origin A:B →将远程分支A fetch下来, 和分支B merge
git fetch
关联远程分支
git branch --track <本地分支名> <远仓名/分支名> git branch --set-upstream-to <远仓名/分支名> <本地分支名>
解除关联 git branch --unset-upstream <本地分支名>
查看分支
本地分支 git branch
本地+远程分支 git branch -a
本地和远程的关联关系 git branch -vv
删除分支
本地分支
git branch -d <分支名>
远程分支
git push <远仓名> -d <分支名>
并没有删除关联
比较分支
比较文件差异
分支A和分支B的差异(A→B) git diff A B
本分支和分支A的差异(A→本分支) git diff A
列出有差异的文件列表 git diff A B --stat
比较commit差异
A有但B没有的提交历史 git log -p A ^B
(和上面功能一样)B有A没有的提交历史 git log -p A..B
AB间所有各自独有的提交(按时间顺序) git log -p --left-right A...B
标签管理
打标签
最新的commit git tag <标签名>
指定的commit git tag <标签名> <commit id>
指定commit+说明文字 git tag -a <标签名> -m <"说明文字"> <commit id>
查看标签列表 git tag
查看特定标签信息 git show <标签名>
推送标签到远程
特定标签 git push <远仓名> <标签名>
所有标签 git push --tags
删除标签
本地标签 git tag -d <标签名>
远程标签
git push <远仓名> :<refs/tags/标签名>
git push <远仓名> -d <标签名>
远程仓库
创建ssh ssh-keygen -t rsa -C "邮箱"
关联远程仓库
git remote add 远仓名 <git@github.com:账户名/仓库名 或 https地址>
查看远程仓库
仓名 git remote
仓名+地址 git remote -v
更改
更改关联远仓的URL git remote set-url 远仓名 URL
删除关联 git remote rm 远仓名
克隆远程仓库
git clone 地址
默认只克隆master, 默认仓名origin
基本命令
创建
创建目录 mkdir 目录名
创建文件
touch 文件名
vi 文件名
默认处于命令模式, 按i→编辑模式
编辑模式下, 按ESC→命令模式
命令
:q退出,未保存会报错 :q!强制退出 :x 保存
dd删除当行
转到目录
转到上一个目录 cd ..
转到下一个目录 cd 目录名
转到特定目录 cd 路径名
查看
查看当前路径 pwd
查看目录 ls
查看隐藏目录 ls -ah
清屏 clear
写入
-e: 激活转义字符
清屏写入 echo 内容>文件名
特殊字符如>, 用^<代替
追加写入 echo 内容>>文件名
删除
删除文件 rm 文件名
删除目录
空目录 rmdir 目录名
非空目录 rmdir /s/q 目录名
//方法一 例子 git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master git log -p master.. origin/master//比较本地的仓库和远程参考的区别 git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并 //方法二 git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp git diff temp//比较master分支和temp分支的不同 git merge temp//合并temp分支到master分支 git branch -d temp//删除temp