基础使用
- 仓库初始化
git init
- 查看 git 仓库当前状态
git status
- 将修改内容添加至暂存区
# 添加指定文件
git add <file_name>
# 添加当前工作目录下所有文件
git add .
- 提交暂存区修改至本地仓库.
git commit -m "<commit_msg>"
# -am 参数可省略 add 过程
git commit -am "<commit_msg>"
- 查看提交纪录
git log
- 更强大的版本信息查看,可以查看版本回退的操作
git reflog
- 查看工作区与暂存区差异
git diff
- 查看已暂存将要提交的内容
git diff --staged
- 放弃当前工作区改动 不可恢复
git checkout <file_name>
git checkout .
- 放弃添加至暂存区的改动,移回工作区
git reset <file_name>
git reset .
- 删除文件
git rm person.m
远端操作
- 克隆远端git仓库至本地
git clone <远端仓库地址>
- 推送本地仓库的提交至远端仓库
git push
# 指定远端仓库与分支(建议使用)
git push origin <branch_name>
- 拉取远端仓库对应分支并与本地仓库合并 默认merge 可添加参数执行变基
git pull
# 以变基的模式进行本地更新
git pull --rebase
- push 推送时,-u 参数可以直接关联本地分支与推送的目标分支
# -u 参数实际就是 --set-upstream-to 过程
git push -u origin <branch_name>
- 手动设置本地分支与远端分支的关联
git branch --set-upstream-to origin/<branch_name>
git branch -u origin/<branch_name>
- 拉取远端分支并创建本地分支
git fetch origin <branch_name>:<branch_name>
- 拉取远端仓库信息至本地仓库(新分支 新tag 等)
git fetch origin
冲突解决
# 当冲突发生时,首先解决代码中的冲突
# 然后执行 git add ./<所有冲突文件>
git merge/rebase --continue
# 冲突发生时,放弃本次合并/变基操作
git merge/rebase --abort
ssh
- 生成 ssh 密钥
ssh-keygen -t rsa -C <your_email@example.com>
配置
- 配置全局用户名
git config --global user.name "cool"
- 配置当前仓库用户名
git config user.name "cool"
- 配置全局邮箱
git config --global user.email "cool@163.com"
- 配置当前仓库邮箱
git config user.email "cool@163.com"
- 给命令行起别名(log起别名需要特殊配置)
git config alias.st "status"
tag
- 查看tag
git tag
- 创建tag
git tag -a <tag_name> -m "<tag_msg>"
- 在指定的 commit 上打tag
git tag -a <tag_name> <commit_msg> -m "<tag_msg>"
- 删除本地指定tag
git tag -d 1.0
- 删除远程tag
git push origin :refs/tags/标签名
- 推送某个标签至服务器
git push origin <tag_name>
- 推送所有标签至服务器
git push origin --tags
版本回退
- 强制回退(一般用于本地更新了内容进行放弃) 回到当前版本
git reset --hard HEAD
- 回到上一个版本
git reset --hard HEAD^
- 回到上上个版本
git reset --hard HEAD^^
- 回到100个版本前
git reset --hard HEAD~100
- 回到具体某个版本
git reset --hard 版本号(一般用前五位)
- 在指定标签上创建一个新分支 标签的检出
git checkout -b <branch_name> <tag_name>
branch
- 查看当前本地分支
git branch
- 查看当前所有分支(包括远端分支)
git branch -a
- 创建分支
git branch <branch_name>
- 切换分支
git checkout <branch_name>
- 创建并切换至该分支
git checkout -b <branch_name>
- 删除分支(如果分支没有被合并,-d 会不允许删除分支,此时用-D可强行删除分支)
git branch -d <branch_name>
git branch -D <branch_name>
- 将指定分支合并至当前分支
git merge <branch_name>
- 变基 将当前分支的基 变为指定分支it
git rebase <branch_name>
版本备份流程
- 1.0版本开发结束,进行备份
# 做本地标记
git tag -a 1.0 -m '这是1.0备份'
# 推送至服务器
git push origin 1.0
- 进行2.0版本开发,但是1.0出现bug,创建一个文件夹用于bug修复
# 获取当前代码
git clone
- 将当前代码转化为1.0标签,创建分支并切换至该分支
# 转化为1.0标签
git checkout 1.0
# 创建分支并切换至该分支
git checkout -b fixbug
- 分支中修复bug,打上标签并上传至共享版本库
git tag -a 1.1 -m '这是1.1修复bug版本'
git push origin 1.1
- 和当前正在开发的版本进行合并
- 删除分支
# 删除本地分支(下面两个方法都要执行才能完整的删除本地分支)
git branch -d fixbug
# 删除本地版本库分支
git branch -r -d origin/fixbug
# 删除共享版本库分支
git push origin --delete fixbug