场景描述:开发过程中,偶尔会遇到比如某个模块功能已经修改完成,但是因为需求变更,修改的地方不需要改了,这个时候就需要对修改的代码恢复原状,这时候只需要把修改的代码的 commit 进行删除,那么相应的修改操作也就恢复了;
••••••标签 git 下的文章
Git 合并指定分支的指定 commit
只合并一个 commit
git checkout develop-hbb
git cherry-pick 7c32be61
7c32be61 是 develop 上的一个 fix bug 的 commit;
上面就是将这个 commit 合并到 develop-hbb 上;
如何将现有 git 仓库中的子目录分离为独立仓库并保留其提交历史
这几天想要把一个 git 仓库中已经存在的一个子文件夹独立成一个新的 git 仓库,并且保留之前关于此文件夹的所有提交历史。不过我对 git 并没有这么精通,只好上网搜索之。可能是因为我关键词抓得不准,搜了好一会儿才找到可行的方案,所以写篇博文记录一下,希望能帮到后来人。
另外,在 git 里这种掌控历史的感觉真棒(笑)
0x01 需求分析
我为什么会有如本文标题所述这样的需求呢?这是因为我之前把所有为 Blessing Skin 这个程序编写的插件源码都放在一个 git repo 中了,每个子文件夹中都是一个独立的插件(因为嫌麻烦所以一股脑给塞进一个仓库里了),并且对每个子文件夹中的代码的修改最后都是在这个统一仓库中提交的。该仓库差不多长这样:
••••••Git 删除错误提交的 commit
起因:不小新把记录了公司服务器IP,账号,密码的文件提交到了 git
方法:
git reset --hard <commit_id>
git push origin HEAD --force
参数:
三个参数:--soft
--mixed
--hard
,会对 working tree、index 和 HEAD 进行重置:
git reset --mixed
:此为默认方式,不带任何参数的git reset
;这种方式,它回退到某个版本,只保留源码,回退commit 和 index 信息;git reset --soft
:回退到某个版本,只回退了 commit 的信息,不会恢复到 index file 一级;如果还要提交,直接 commit 即可;git reset --hard
:彻底回退到某个版本,本地的源码也会变为上一个版本的内容;
HEAD
最近一个提交
HEAD^
上一次
<commit_id>
每次 commit 的 SHA1 值,可以用git log
看到,也可以在页面上 commit 标签页里找到;
git add -A 和 git add . 的区别
git add -A
和 git add .
、git add -u
在功能上看似很相近,但还是存在一点差别的;
git add .
:它会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件;
git add -u
:git add --update
的缩写,它仅监控已经被 add 的文件(即 tracked file),它会将被修改的文件提交到暂存区,不会提交新文件(untracked file)。
git add -A
:git add --all
的缩写,是上面两个功能的合集。
Git 远程仓库地址变更
git remote set-url origin git://new.url.here
搭建 Hexo 博客并使用 Git Hook 自动部署到阿里云
最新闲来无事,折腾了一下 Hexo 博客系统,它是 Node.js 写的,据说速度很快。它的所有操作都可以直接在命令行完成,修改也只需要修改配置文件就可以了,不用上后台各种点击,避免各种麻烦。
Hexo 博客系统架构
首先了解一下 Hexo 博客系统的架构,它是如何实现静态博客通过服务器访问的:
••••••Git SSH Key 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。
••••••