本文是学习廖雪峰前辈官方网站Git部分,总结输出
简介
- 分布式版本管理系统,用C语言编写而成,2005年出现,2008年官方网站上线
对比
- SVN:版本库在中央服务器,每次工作流程:中央服务器—本地电脑获取最新版—工作—上传到中央服务器
- Git:每个人电脑上都有完整的版本库,也有一台充当“中央服务器”的电脑,但只是交换大家的修改而已。
安装
- 安装:地址:https://git-scm.com/
- 配置
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
本地仓库
1.回退功能
- 查看日志:
git log --pretty=oneline
每一次的提交历史- –pretty=oneline使得日志在一行显示,便于查看
- 日志中显示的一串数字字母是版本号,即commit id
- 回退到指定版本:
git reset --hard HEAD~0
HEAD是一个指向master的指针 - 记录每一次的命令:
git reflog
2.三个部分
- 三部分
- 工作区:本地项目文件
- 暂存区(stage)
- 当前分支
- 版本库
git init
git add .
工作区—暂存区git commit -m '提交描述
暂存区—当前分支
- git管理的是修改,每一个修改都需要先add,再commit
- 工作区的修改全部撤销:
git checkout -- 文件名称
- 暂存区—工作区:
git reset HEAD 文件名称
- 删除文件:
git rm 文件名称
远程仓库
假设已经在github有仓库
- 关联:
git remote add origin 仓库地址
- 首次推送:
git push -u origin master
- 之后推送:
git push origin master
- 克隆:
git clone 仓库地址
分支
- 创建:
git branch dev
- 查看:
git branch
- 切换:
git checkout dev
- 创建并切换:
git branch -b dev
- 合并:
git merge dev
- 删除:
git branch -d dev
- 新版本:使用switch创建并切换:
git switch -c dev
与git checkout -- 文件名称
命令区分 - 查看分支合并图:
git log --graph
- 模式
- Fast forward模式,删除分支不会保留分支信息
- 禁止使用上方模式:–no-ff,会生成一个commit ,要使用-m,最终命令:
git merge --no-ff -m "描述" dev
- 储藏工作现场
- 储藏:
git stash
- 恢复
- 未删除stash内容:
git stash apply
需要此命令删除git stash drop
- 删除stash内容:
git stash pop
- 未删除stash内容:
- 查看:
git stash list
- 复制特定提交到当前分支:
git cherry-pick 提交版本号
- 储藏:
- 删除未被合并的分支:
git branch -D <name>
-D强行删除 - 本地和远程分支
- 本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name
本地和远程分支的名称最好一致; - 建立关联,使用
git branch --set-upstream branch-name origin/branch-name;
- 本地创建和远程分支对应的分支,使用
- rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了
标签
- 创建
- 默认是最新提交打标签:
git tag 名称
- 指定提交打标签:
git tag 名称 版本号
- 有说明的标签:
git tag -a 名称 -m 描述
- 默认是最新提交打标签:
- 查看
- 所有标签:
git tag
- 标签信息:
git show 名称
- 所有标签:
- 删除
- 本地:
git tag -d 名称
- 远程:先本地
git tag -d 名称
;再远程git push origin :refs/tags/名称
- 本地:
- 推送:
git push origin tagname
所有标签都推送git push origin --tags