导图社区 git-probr九 章
关于git-probr九 章的思维导图,分享了: 1.起步 2.git 基础 3. 分支 7.Git工具 8 自定义Git
编辑于2023-05-27 23:46:35 湖南git-pro<br>九 章
3. 分支
3.1 何谓分支
git branch branchName
git checkout branchName
3.2 分支的新建与合并
分支的新建与切换
git checkout -b branchName
git branch -d/-D branchName
分支的合并
解决完冲突后可以运用git add来表示编辑完冲突
git mergetool
3.3 分支的管理
git branch --merged/--no-merged 已经或者尚未和当前分支合并的分支
git branch -d branchName会报错是因为这些分支中包含还没有合并进来的工作成果,删除会丢失数据
3.4 利用分支进行开发的workflow
长期分支
特性(短期)分支
3.5 远程分支
用 (远程仓库名)/(分支名) 这样的形式表示远程分支
git push --set-upstream origin jy 第一次把本地分支推送到远程去
git fetch origin同步远程服务器上的数据到本地
git push origin branchName[/remoteBranchName] push本地分支到远程分支去
在 fetch 操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。 换句话说,在本例中,你不会有一个新的 serverfix 分支,有的只是一个你无法移动的 origin/serverfix 指针。
git merge origin/branchName 把该远程分支的内容合并到当前分支
git checkout -b localBranchName origin/remoteBranchName 把该远程分支的内容合并到当前分支
git checkout --track origin/serverfix 跟踪远程分支
git checkout -b b newBranch origin/remoteBranch 为本地分支设定不同于远程分支的名字
3.6 分支的衍合
把一个分支的修改整到另一个分支的两种方法
merge
rebase(衍合)
基本的衍合操作
3.7 小结
删除远程分支
git push origin :remoteLocal
7.Git工具
7.1 选择修订版本
git show branchName 在当前分支显示某个分支最后一次提交
git rev-parse branchName
一个探测指针。 显示该分支指向哪个commit(最新提交)
7.2 交互式暂存
7.3 Git工具- 储藏与
7.4 签署工作
7.5 签署
7.6 重写历史
1.起步
git的三种状态
已提交
已经放到git本地数据库里的文件
已修改
已经修改了但是还没有提交的
暂存区
把已修改的文件放在下次提交时要保存的清单
2.git 基础
2.1 取得项目的Git仓库
git init
git clone cloneAddress
2.2 记录每次更新到仓库
文件只有两种状态
已跟踪
未更新
已修改
已暂存
未跟踪
git status
跟踪新文件
git add ./fileDir/fileName
可以选择add所有. add目录 add某一个具体的文件
忽略某些文件
文件 .gitignore 的格式规范如下: 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。 可以使用标准的 glob 模式匹配。 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
cat .gitignore 查看
查看已经被忽略的文件
.gitignore文件也支持glob匹配模式
git diff查看更改
如果要查看已经放入了暂存区里的文件的修改.还是得用git diff --staged看. 请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
git diff --staged查看已经暂存(还未commit)的文件里的更改
移除文件 git rm [-f]
可以移除已经放入暂存区的文件. 如果要删除已经放入暂存区域的文件直接 git rm fileName是会报错的.
git rm --cached fileName 从git仓库移除文件,但是保留在当前工作目录中
git rm * -r删除所有文件(包括目录)
git mv beforeName afterName
2.3 查看提交历史
git log
git log [-p] 查看详细差异
git log [-n]
git log --author=wuxiaolan
只看某个人的更改
git log -p -2 ...(组合)
git log --stat 只显示增改的行数统计
git log --pretty=oneline/short/full/fuller
格式化显示日志 这里的oneline容易集成online
git log --grep keyword
可以支持同时搜索多个关键字 但是需要加上--all-match 否则会只要满足关键词里的任意一个都能搜索出来.
gitk 查看git历史 git log的可视化版本
2.4 撤销操作
取消已经暂存的文件
git reset HEAD [file]
git reset .撤销上次add
git checkout -- fileName 取消对文件的修改
修改最后一次的提交
git commit --amend 修改最后一次提交
2.5 远程仓库的使用
git fetch会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新
git fetch分支和git pull的区别,就是gull只会把远程分支自动合并到本地仓库中的当前分支. git fetch此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。(我们会在第三章详细讨论关于分支的概念和操作。)
git push origin localBranchName:remoeBranchName 把本地的新建的分支推送到远程去
git remote show origin 服务器有哪些分支本地是没有更新的等等
它告诉我们,运行 git push 时缺省推送的分支是什么(译注:最后两行)。它还显示了有哪些远端分支还没有同步到本地(译注:第六行的 caching 分支),哪些已同步到本地的远端分支在远端服务器上已被删除(译注:Stale tracking branches 下面的两个分支),以及运行 git pull 时将自动合并哪些分支(译注:前四行中列出的 issues 和 master 分支)。
2.6 打标签
为什么要打标签? 发布某个软件版本的时候
git tag:列出现有的标签
标签的两种类型
轻量级的
git tag tagName
含附注的
git tag -a tagName -m tagDesc
git tag -a tagName sha-1值 给以前的提交补充tag
git push origin tagName 把本地的这个tag提交到远程去
git push origin --tags 把本地所有标签push到远程去
2.7 技巧和窍门
git 后连按两次TAB,能列出所有匹配的可用命令建议
git 命令的部分命令,再按TAB,能自动补全git命令
git co(自动丿配git commit/config,建议直接输git com+TAB
Git别名
git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status
8 自定义Git
8.1 配置git
外部的合并与比较工具
格式化与多余的空白字符
8.3 git钩子
Git 能在特定的重要动作发生时触发自定义脚本。
提交工作流钩子
pre-commit在键入提交信息前运行
它用于检查提交,可以利用这个钩子,来检查代码风格是否一致(运行类似jshint这样的程序),尾随空白字符是否存在,或者新方法的文档是否适当
电子邮件工作流钩子
其他客户端钩子
子主题
服务器端钩子
post-receive可以用来更新其他系统服务或者通知用户
它的用途包括给某个邮件列表发信,通知持续集成的服务器,或者更新问题追踪系统,甚至可以通过分析提交信息来决定某个问题是否应该被开启,修改或者关闭