前言:一直知道分布式版本控制系统git,但是无奈从来没有用过,有幸,最近公司开始改用git,故,利用上班空余时间,系统的学习了一下,以下便是我对git命令的一些总结。
来源https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
INSTALL 安装
本人用的正是号称最烂开发平台的windows操作系统,默认环境为windows (默默攒钱买Mac。。。。。)
安装完成之后,Git里面会有三个应用,分别是,GUI、CMD、Bash
打开Git Bash 完成基础设置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
设置完成后 会在用户主目录下面的一个隐藏文件.gitconfig里发现所设置的情况
CREATE 创建
$ mkidr <catalogue name> ——————创建空目录
$ pwd ——————显示当前目录
$ git init ——————创建一个新的本地版本库
$ ls -ah ——————查看隐藏目录
创建目录时请确保目录名不包含中文
创建SSH Key
$ ssh-keygen -t rsa -C “youremail@example.com”
设置完成后 会在用户主目录找到.ssh目录, [id_rsa]是私钥,[id_rsa.pub]是公钥
注册一个github帐号,将你的公钥添加进去,你就获得了一个Git远程仓库了
$ git remote add origin git@server-name:path/repo-name.git——————关联一个远程库
$ git push -u origin master ——————推送master分支的所有内容
$ git push origin master ——————推送最新修改
$ git clone <address> ——————从远程版本库克隆
address支持多种协议,包括https,但通过ssh支持的原生git协议速度最快
LOCAL CHANGES 本地更改
$ git add . ——————将所有当前更改添加到下一个更改
$ git add -p <file> —————— 在文件到下一个提交中添加一些更改
$ git add -f <file> ——————强制添加
$ git commit -m "<explain>" ——————把文件提交到仓库
$ git commit -a ——————提交跟踪文件中的所有本地更改
$ git commit . ———————提交之前更改
$ git commit --amend ——————提交最后一次更改
$ git status ——————查看仓库当前状态
$ git diff ——————追踪文件更改
$ git diff HEAD -- <file> ——————查看工作区和版本库里面最新版本的区别
$ git rm <file> ——————删除文件
COMMIT HISTORY 提交历史
$ git log ——————显示最近到最远的提交日志
$ git log --pretty=oneline ——————一列显示日志信息
$ git log --pretty=oneline --abbrev-commit ——————一列显示日志信息 缩写
$ git log -p <file> —————— 显示更改特定文件的日志信息
$ git blame <file> —————— 显示在特定文件中谁更改了什么
$ git reflog ——————查看命令历史
$ git log --graph ——————查看分支合并图
UNDO 撤销
$ git reset --hard HEAD ——————回退到当前版本
$ git reset --hard HEAD^ ——————回退到上个版本
$ git reset --hard HEAD^^ ——————回退到上个个版本
$ git reset --hard HEAD~100 ——————回退到上100个版本
$ git reset --hard <commit> ——————回退到指定版本
$ git reset HEAD <file> ——————撤销暂存区的修改,重新放回工作区
$ git reset <commit>——————回退到指定版本并保存所有变化
$ git reset --keep <commit> ——————回退指定版本并保留未提交的本地更改
$ git checkout -- <file> —————— 丢弃本地更改
$ git checkout HEAD <file> —————— 丢弃特定文件中的本地更改
$ git revert <commit> ——————恢复更改
BRANCHES & TAGS 分支和标签
$ git branch ——————查看分支
$ git branch -av ——————查看全部的分支列表
$ git branch <name> ——————创建分支
$ git checkout <name> ——————切换分支
$ git checkout -b <name> ——————创建+切换分支
$ git checkout --track <remote/branch> —————— 基于远程分支创建一个新的分支
$ git branch -d <name> ——————删除分支
$ git branch -D <name>——————强行删除分支
$ git merge <name> ——————合并某分支到当前分支,fast forward模式,无分支历史记录
$ git merge --no-ff -m "explain" <name> ——————普通模式合并,合并后有历史记录
$ git tag <tag-name> —————— 打一个新标签
$ git tag ——————查看所有标签
$ git tag -a <tagname> -m "explain" ————指定标签信息
$ git tag -s <tagname> -m "explain" ——————用PGP标签签名
(采用PGP签名,需要安装GnuPg,至于如何使用和配置gpg,请移步:http://www.williamlong.info/archives/3439.html)
$ git stash ——————隐藏当前工作现场
$ git stash list ——————查看工作现场
$ git stash apply ——————恢复工作区 不删除stash
$ git stash pop ——————恢复工作区 删除stash
UPDATE & PUBLISH 更新和发布
$ git remote -v —————— 显示远程库详细信息
$ git remote show <remote> —————— 显示有关远程的信息
$ git remote rm origin ——————删除远程库
$ git fetch <remote> —————— 下载所有远程更改但是不与当前版本合并
$ git pull <remote> <branch> —————— 抓取远程库的新提交
$ git push <remote/branch> —————— 从本地推送
$ git checkout -b branch-name origin/branch-name ——————在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致
$ git branch --set-upstream branch-name origin/branch-name ——————建立本地分支和远程分支的关联
$ git push --tags —————— 推送标签
$ git push origin <tagname> ——————推送一个本地标签
$ git push origin --tags ——————推送全部未推送的本地标签
$ git push origin :refs/tags/<tagname> ——————删除一个远程标签
OTHER 其他
$ cat <file> ——————查看文件内容
$ git config --global color.ui true ——————让Git显示颜色
设置忽略特殊文件 .gitignore
配置文件地址:https://github.com/github/gitignore
$ git check-ignore -v <file>——————检查对应文件.gitignore配置规则
偷懒好大法
$ git config --global alisa.<别名> <命令名> ——————配置别名
常见别名设置:
1.$ git config --global alias.st status
2.$ git config --global alias.co checkout
3.$ git config --global alias.ci commit
4.$ git config --global alias.br branch
5.$ git config --global alias.unstage 'reset HEAD'
6.$ git config --global alias.last 'log -1'
7.$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
说明:--global命令是对当前用户起作用,如果不加,就只针对当前仓库起作用
每个仓库的Git配置文件都放在.git/config中
总结 :
熟记命令,多敲多练,该偷懒时,就偷懒,哈哈
OK 好好学习,天天向上,加油!!!