
git
- 什么是Git
- 分布式版本控制系统
- 世界上最流行、最先进的版本控制系统(没有之一)
- 与SVN的区别
- Git版本提交历史存在本地,脱机状态也可以查看log,SVN则存在中央仓库,一旦中央仓库出现问题,无法保存历史提交信息
- 克隆一份拥有5个分支的项目,SVN是同时复制5个版本的文件,即重复五次同样的动作。而Git只是获取文件的每个版本的 元素,然后只载入主要的分支(master)
- SVN有一个全局版本号,而Git没有,你可以创建无限多的分支,可以基于任何一次提交创建分支,创建的分支并不会影响其他开发者
- Git可以不依赖网络做“任何事情”,对分支和合并有更好的支持
- 全球最大的代码托管平台GitHub使用的是Git什么是Gitlab?
- 什么是Gitlab?
- 基于Git的仓库平台
- 开源
- 本地部署
- 开始使用Git
- *载下**安装,一路下一步即可,右键出现Git Bash Here说明安装成功
- git config --global user.name “xxx“ 设置你的Git用户名
- git config --global user.email “xxx@xxx.com“ 设置你的邮箱地址
- git config --list 查看git配置信息
- git help 查看帮助信息
- 创建版本库
- git init 将当前目录初始化
- git init xxx 新建xxx文件夹并初始化
- git clone url 克隆远程仓库
- .gitignore文件 可在该文件中指明哪些文件(夹)不需要追踪
- .gitkeep文件 让空文件夹保证被追踪,因为git会忽略空文件夹的追踪
- 工作区与暂存区(add)
- git status -s 检查当前工作区状态,-s可选,输出简略信息
- git add -A 将所有变化添加到暂存区
- git add . 将新文件和被修改的文件添加到暂存区
- git add files 将指定文件添加到暂存区
- git rm --cached files 取消对文件的暂存,适用于首次add后
- git reset HEAD files 取消对文件的暂存,适用于至少有过一次提交(commit) 的项目,不加files则撤销所有暂存
- 提交至版本库(commit)
- git commit -m “some message,support emoji” 将暂存区文件提交到版本库
- git commit -m “commit message” files 将指定文件提交,不加-m则会打开 vim编辑器输入提交信息
- git commit --amend 打开vim编辑器,修改最后一次提交,如果暂存区 有文件,也会一并提交
- git checkout HEAD files 取消对文件的修改,包括取消删除
- git checkout HEAD . 取消所有更改
- 分支(branch)
- git branch 查看本地所有分支,当前所处分支前面会有星号*,-r查看远程所有分支,-a查看本地和远程所有分支,-v显示最后一次提交
- git branch branchName 新建分支
- git checkout -b branchName commitid 新建并切换至该分支,commitid表示 要基于哪次提交创建,默认当前分支
- git checkout branchName 切换分支,注意取消修改也是该命令
- git branch -d branchName 删除分支,-D表示强制删除,但不能删除当前所 处分支
- 标签(tag)
- git tag 列出所有标签
- git tag -l “v1.*” 列出所有v1.的标签
- git tag tagName 创建一个轻量级标签
- git tag -a tagName -m “some text” 创建一个含标注信息的标签
- git tag -d tagName 删除标签
- 查看操作
- git log --graph --oneline 查看提交历史,--graph会展示提交线,-- oneline只显示单行信息,按q退出
- git log –p -2 files 查看某些文件最近2次提交,并显示提交差异
- gitk branch (--all) 查看某分支(所有分支)历史记录,不加则查看当前分支
- git show commitid(tag) 查看某次提交(某个标签)的具体信息
- git diff --cached 查看暂存区里修改的内容,即即将被提交的内容,不加 cached则查看未加入暂存区的修改的内容
- 远程仓库(remote)
- git clone url 克隆远程仓库
- git remote -v 查看远程仓库信息
- git remote add origin url 添加(关联)远程仓库,origin为名称,可以添加多个
- git remote rename oldName newName 修改远程仓库名称
- git remote set-url origin newUrl 修改远程仓库地址
- 拉取与推送(pull & push)
- git clone -b branch url 从远程仓库克隆某一分支
- git fetch origin branch:alias 获取远程分支并改名为本地alias分支
- git merge branchs 将branchs合并到当前分支
- git pull origin rBranch:lBranch 取回远程分支,并与本地分支合并,即上面2个操作的合体,若分支名一样可省略一个
- git push -f origin branch 将分支推送到远程仓库,-f会强制推送,正常不 需要,一般用于版本回退
- git rebase
- git rebase branch 将当前分支的提交追加到branch分支的提交之后
- 将branch分支的提交插入到当前分支的提交之前
- git rebase --continue 用于解决冲突后继续进行rebase,解决冲突后需要add
- git rebase --skip 忽略当前分支的修改,使用其他分支
- git rebase --abort 终止rebase,还原rebase之前的场景
- 修改commit历史
- git commit --amend 修改最后一次的提交信息
- git rebase -i commitid 修改某次提交之后的历史
- git rebase -i HEAD~2 修改前两次的提交
- 修改历史可能会产生新的commitid
- 需要多次结合git commit --amend进行修改,最后使用
- git rebase --continue完成

- git stash 储藏
- git stash 储藏当前变更,以便进行其他工作
- git stash list 查看所有的储藏
- git stash pop 应用最近的一次储藏,并将其从堆栈中删除
- git stash apply stash@{1} 指明应用某个储藏,但不会删除该储藏,若不指 明则应用最近的一次储藏
- git stash drop stash@{0} 删除储藏
- git reset 版本回退
- git reset --soft commitid 回退到指定版本,--soft会保留暂存区文件
- git reset --hard HEAD~2 往前回退两个版本,--hard不会保留暂存区文件
- git reset不会保留之后的提交
- git revert 撤销
- git revert -n commitid 撤销某个提交,需结合git add,-n表示手动填写commit信 息,有冲突时不加-n也会让你手动填写commit
- git revert -n c1^..c2 revert两个commitid之间的提交
- git revert HEAD~2 revert前两个版本
- git revert会保留之后的提交
- 自己多用,多访问,多测,远比看文字好处大,喜欢的 点赞加关注,谢谢