Git 简介
Git是目前世界上最先进的分布式版本控制系统。
如果你是小白,请先看这里: www.liaoxuefeng.com/wiki/001373…
专用名词
- Workspace: 工作区
- Index / Stage: 暂存区
- Repository: 仓库区 ( 本地版本库 )
- Remote: 远程仓库 ( 远程仓库 / 远程版本库 )
Git 工作流
Fork a repo
Creating a pull request from a fork
代码库
在当前目录新建一个Git代码库
git init
新建一个目录,将其初始化为Git代码库
git init [project-name]
克隆代码库, 默认克隆所有分支
git clone [url]
克隆指定分支代码
git clone [url] -b [branch name] eg. git clone https://github.com/vuejs/vuex.git -b dev
克隆默认分支最新一次提交
git clone [url] --depth=1 eg. git clone https://github.com/reiinakano/fast-style-transfer-deeplearnjs.git --depth=1
克隆指定分支指定层数
git clone -b [branch name] [url] --depth=1 克隆 dev 分支最近一次提交 eg. git clone -b dev https://github.com/vuejs/vuex.git --depth=1
Git 配置
Git的设置文件为 .gitconfig
,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
显示当前Git配置
git config --list
编辑Git配置文件
git config -e [--global]
设置代码时的用户信息 建议设置此项,后面的操作会很方便
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
增加/删除文件
操作之前先执行 git status
查看一下状态
添加文件到暂存区 建议使用这种方式进行操作
git add [file1] [file2] ...
添加所有改动到暂存区
git add .
删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...
停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file]
代码提交
操作之前先执行 git status
查看一下状态
提交暂存区到仓库区
git commit -m [message]
提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2] ...
##分支
列出所有本地分支
git branch
列出所有远程分支
git branch -r
列出所有本地分支和远程分支
git branch -a
新建一个分支,但依然停留在当前分支
git branch [branch-name]
新建一个分支,并切换到该分支
git checkout -b [branch]
切换到指定分支,并更新工作区
git checkout [branch-name]
合并指定分支到当前分支
git merge [branch]
删除本地分支
git branch -d [branch-name]
删除远程分支
git push origin --delete [branch-name] 或者 git branch -dr [remote/branch]
恢复删除的分支 Git 分支删除后恢复
git branch new_branch commitId
查看信息
查看改动的文件
git status
查看当前分支的版本日志
git log
查看单行日志
git log --pretty=oneline
查看日志主题
git log --pretty=format:%s
查看 commit 的最新编号
git rev-parse HEAD
显示暂存区和工作区的差异
git diff
显示今天写了多少行代码
git diff --shortstat "@{0 day ago}" git log --author="$(git config --get user.name)" --no-merges --since=1am --stat
过滤 commit . git log --grep
git log --grep chore git log --grep --author="John"
标签
列出现有标签
git tag
创建一个含附注类型的标签
git tag -a v0.5.0 -m 'version 0.5.0'
git show
显示各种类型的对象。查看相应标签的版本信息,同时显示打标签时的提交对象
git show v0.5.0
push
单个 tag
git push origin [tagname] eg: git push origin v1.0 #将本地v1.0的tag推送到远端服务器
push
所有 tag
, 如果不起作用,在 Git
控制台确认账号是否有权限推送 Tag
git push origin --tags
删除本地标签
git tag -d [tagName]
删除远程标签
git push origin :refs/tags/[tagName]
远程同步
下载远程仓库的所有变动
git fetch [remote]
显示所有远程仓库
git remote -v
修剪 - 删除与 origin 相关的陈旧引用
git remote prune origin
拉取远程仓库的变化,并与本地分支合并
git pull [remote] [branch]
上传本地指定分支到远程仓库
git push [remote] [branch]
强行推送当前分支到远程仓库,即使有冲突 谨慎使用
git push [remote] --force
推送所有分支到远程仓库
git push [remote] --all
Git 证书问题
临时生效,退出shell后失效
export GIT_SSL_NO_VERIFY=true
永久生效
echo 'export GIT_SSL_NO_VERIFY=true' >> ~/.bashrc
win10 出现证书问题 解决方式
git config --global http.sslVerify false
Git 入门指南(二):https://developer.aliyun.com/article/1391866