
git reflog:记录时光机
git reflog:记录时光机比git log更强大的命令使git reflog,可以找到已经删除的commit记录,而普通的log命令无法查询到已被删除或者悬空的commit记录。reflog是git操作的一道安全保障,能够记录几乎所有本地仓库的改变。1、reflog管理reflog信息。git reflog根本不遍历HEAD的祖先。它是HEAD所指向的一个顺序的提交列表:它的undo历史。r
分类
Git 版本控制系统的全面指南,深入解析其使用方法、技巧与命令操作。从基础的 init、add、commit 和 push/pull,到高级主题如分支管理(branch、merge、rebase)、冲突解决、stash 暂存和 hook 自定义,提供详尽命令示例和实际场景应用。涵盖 GitFlow 工作流、子模块(submodule)和远程仓库协作优化。
共 35 篇文章

git reflog:记录时光机比git log更强大的命令使git reflog,可以找到已经删除的commit记录,而普通的log命令无法查询到已被删除或者悬空的commit记录。reflog是git操作的一道安全保障,能够记录几乎所有本地仓库的改变。1、reflog管理reflog信息。git reflog根本不遍历HEAD的祖先。它是HEAD所指向的一个顺序的提交列表:它的undo历史。r

git blame:显示文件的每行提交记录信息git blame对文件的每行信息都进行注释。能看到关于该行修改的每一次commit的哈希标签、作者和提交日期。Intellij IDEA在打开文件的行数右键点击Annotate显示文件每一行的记录信息。应该用的就是这个命令实现的功能。
git bisectgit bisect是一个很有用的命令,用来查找哪一次代码提交引入了错误。它的原理很简单,就是将代码提交的历史,按照两分法不断缩小定位。所谓"两分法",就是将代码历史一分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到范围缩小到某一次代码提交。①启动查询①设置区间bad末尾②设置区间good起始git 会头指针指向两个版本之间的那次提交③开始二分标记如果代码没问

gitk:git图形化操作工具在命令行输入gitk可以打开图形化git界面。这种方式Ctrl+C都不能终止任务。在打开后,不占用Terminal在后台运行查看后台运行的任务还有另一种命令方式显示图形化的Log
.gitignore使用IDE创建工程的时候一般都会根据模板创建一些文件,其中关于git的就是.gitignore文件。手动git init初始化一个仓库是没有这个文件的,需要在工程的根目录创建改文件并配置。.gitignore文件的作用就是告诉git哪些文件不需要添加到版本管理中,自动无视这些文件。1、规则 # 注释 / 开头表示目录,放在末尾表示目录 * 通配符,匹配零个或多个任意字符 ? 单
git taggit可以给仓库历史中的某一个提交打上标签(tag)。开发过程中,常常拉出基线,在来处基线出打上tag,标志该出已经拉出一条稳定的产品基线。tag可以理解问一个不可修改的branch分支。1、查看tag -l 或 --list 列出仓库中所有标签使用可选<pattern>...仅列出与模式匹配的标签。通配符必须和-l或者--list配合使用。不带参数运行“ git tag”也会列出所

git rebase调整commit之间顺序一连提交了几笔commit,想调整一下顺序,把其中一笔提交置顶拿到最前面来,专门修改这一笔提交。当然如果想修改某一笔提交,可以reset到那笔commit,进行修改,完成之后再把之后的提交cherry-pick回去。git log查看提交记录,每笔提交记录太多,可以让每笔提交仅显示一行查看 --oneline。使用git rebase -i进入编辑,之前
Unlink of file '.git/objects/pack/pack-***今天pull代码的时候又遇到问题了,弹出没完没了的选择(y/n)。Unlink of file '.git/objects/pack/pack-fgh4cfab4ef8bb1d5b16e6ec.pack' failed. Should I try again? (y/n)Unlink of file '.git/o
Android AOSP repo 工具下载与使用指南repo 是 Google 专为管理 Android 源码(AOSP)而开发的仓库管理工具,它建立在 Git 之上,用一个 manifest 清单把数百个 Git 仓库组织起来,实现统一同步与管理。对于需要拉取、阅读或修改 AOSP 源码的开发者,repo 是绕不开的入口工具。本文按"安装 → 初始化 → 同步 → 常用命令 → 高级用法"的顺

git rebase -i合并commit提交今天开发就真遇到了要合并多个commit提交,因为自己在开发的时候按照功能细分,一个功能开发一个commit提交。leader review代码的时候觉得提交太多,显得乱,提交划分的不应该这么细。而且review的过程中,前面几笔提交有要修改的地方,这下就很麻烦,需要退回去修改,在重新一笔一笔提交,而且后面的提交中又修改了前面的,也依赖前面要修改的地方
git cherry-pick将另一个分支的提交“捡”过来,再次在当前分支提交。需要知道本地另一个分支的提交的commit ID,或者gerrit上面的别人提交对应的cherry-pick链接。如果没有出现冲突,该命令将自动提交。如果不想cherry-pick自动产生提交,继续往后面看。1、cherry-pick 冲突如果要cherry-pick过来的提交和本地的修改有冲突,需要处理,解决完冲突之

Found a swap file by the name filename提交代码的时候,编辑commit提交信息总是提示错误。又出什么幺蛾子了。可能是因为之前提交过程中,自己强行把终端关闭导致后面出错了。出现这个问题是因为vim正在编辑文件或者提交的时候,终止了Terminal终端。从报错提示不难看出.COMMIT_EDITMSG.swp是在commit编辑提交信息的时候的缓存。使用ls -a

git 报错 fatal: index-pack failed1、git clone操作出现fatal:index-pack一次在clone仓库的时候出现报错fatal:index-pack因为当前clone文件夹的属性为“只读”,无法写入文件夹属性“只读”取消即可2、git pull报错 fatal: index-pack failed参考这篇博客:git pull报错 fatal: index

.gitconfig配置文件git很方便,输入命令可以简化。比如输入git st 可以直接显示工作区状态。这是通过设置命令别名实现的。1、配置文件找到C:\Users{UserName}用户根目录下的.gitconfig文件,打开是一些基本配置信息设置的GitHub用户user解决git中文路径显示乱码添加alias别名2、命令行设置设置别名的方式删除别名:3、全局配置 --global设置con