Git 清理无用Commit 和 Tags

因为自己手残导致Git库内添加一些奇怪的东西,还很占地方,于是就有了这篇文章。

Error:请谨慎对待每一次Commit

Git清理全部Commit

缺点就是你提交记录和文件历史全没了,但是简单高效粗暴~

#切换分支
git checkout --orphan latest_branch

#添加所有文件
git add -A

#提交分支
git commit -m "提交说明"

#删除主分支
git branch -D master

#重名当前分支为master(主分支)
git branch -m master

#提交到远程仓库(强制覆盖)
git push -f origin master

Git删除指定文件及其历史记录

Error:注意:文件路径千万不要以/开头!否则就不是相对路径了!
上条警告是来自于被舍友rm -rf /*的某人的悲鸣~

搭建Gitolite实现对源码仓库权限管理

正巧,前一段时间主力NAS炸了(详情见此处),临时把NanoPi NEO2翻出来顶上了。顺手用导热胶把散热片和外壳粘一起了,效果拔群。

经过这一段时间的使用,发现被动散热真是个好东西。原先的主力NAS,现在设置成冷备机,通过网络唤醒,每周自动执行备份同步,然后关机。完美,终于没有风扇的噪音了~

因为NanoPi上跑的东西有点多(Docker真是个好东西),所以需要一个轻量的Git权限管理工具。

最后我选定了Gitolite来实现对源码仓库权限管理。


部署&配置Gitolite

部署

推荐新建个低权限用户安装运行
#新建一个用户git,<-s>参数指定新用户使用的shell路径
sudo useradd -s /bin/bash git
#设置密码
sudo passwd git
#切换用户
su git

说真的,Gitolite安装非常简单。你可以直接从源来安装。

sudo apt install gitolite3

当然,你也可以从仓库拉取源码安装。

git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin

Github已Fork项目同步原始项目代码

你在维护一个项目时候,需要时刻保持Fork的项目和原项目的代码一致,防止冲突。

这里简单记录一下Github如何使自己Fork的项目和原项目同步。

目前有两种方式。

    1. 本地使用命令从原来项目上合并代码到本地,然后在push上去。
    1. 直接在 github 进行一个新的Pull request,然后在pull回本地。

很显然第二种方法十分友好(图形化+chrome翻译吹爆),这里就简单记录一下步骤。