原来极客都是这样管理 dotfiles 的

原来极客都是这样管理 dotfiles 的 大家好,我是极客老墨。 作为开发者,你肯定干过这种事:新买了台 MacBook,兴冲冲地打开,然后开始漫长的配置之旅——装 Neovim、调 VSCode、改 .zshrc、配 Git、搞主题、设快捷键……折腾了一整天,终于把环境调成自己熟悉的样子。 更惨的是,过了半年,你又换了台机器,或者不小心把配置改坏了,想恢复?抱歉,当时怎么配的已经忘得一干二净。 这种痛,我懂。所以今天咱们就来聊聊,怎么用 Git 管理这些配置文件(dotfiles),让你的开发环境可以"一键复制",随时回滚,多机器同步。 说实话,我折腾 dotfiles 管理已经好几年了。从最开始手动复制配置文件,到后来用 bare repository,再到现在的 symlink 方案,每种方法都试过,每种方法都有坑。今天就把这些年的经验全部掏出来,告诉你什么方法最靠谱。走起! 什么是 Dotfiles? Dotfiles 就是那些以 . 开头的配置文件,比如: .zshrc - Zsh 配置 .vimrc - Vim 配置 .gitconfig - Git 配置 .config/nvim/ - Neovim 配置 .config/wezterm/ - WezTerm 配置 这些文件决定了你的开发环境长什么样,用起来爽不爽。 为什么要管理 Dotfiles? 痛点 1:换机器就抓瞎 新买了台 MacBook,想把老机器的配置搬过来? 手动复制?太慢了,而且容易漏。 痛点 2:配置丢了找不回来 不小心改坏了配置,想恢复? 没有版本控制,只能重新配置。 痛点 3:团队协作困难 团队想统一开发环境? 每个人的配置都不一样,沟通成本巨大。 解决方案:用 Git 管理 把配置文件放到 Git 仓库: 版本控制 多机器同步 团队共享 随时回滚 方法一:Bare Repository(我用过,不推荐) 这是一种很"极客"的方法,不需要软链接,直接把 ~ 目录作为工作目录。 ...

2026-03-10 · 5 min · 868 words · 老墨

ubuntu下ssh关闭密码登陆,采用公钥认证登陆

前段时间,公司内网的机器被黑客入侵,最后分析原因,在于我们希望通过外网访问公司的git仓库,然后开放了22端口,而此前git所在机器上被病毒感染过…… 由于git是单独的服务器,所以我们希望只有公钥认证的用户可以授权访问该服务器,否则拒绝访问。因此,我们决定采用以下方案: 禁止用户通过ssh的账号密码登陆,而是用公钥私钥认证登陆。具体做法如下: 1. 修改SSH配置文件sshd_config 注意是sshd_config,修改ssh_config无效 编辑sshd_config文件: $ vi /etc/ssh/sshd_config 禁用密码验证,默认是yes $ vi /etc/ssh/sshd_config 启用密钥验证 $ vi /etc/ssh/sshd_config 指定公钥数据库文件 $ vi /etc/ssh/sshd_config 2. 重启ssh服务 $ vi /etc/ssh/sshd_config 由于服务器有两个用户:root管理员用户和git用户,而所有访问代码的必须通过git用户访问,git本身已经通过公钥私钥登陆,所以对原来访问代码仓库的客户端没有影响。而目前root用户禁止了密码登陆,如果进行授权呢? 很简单,将授权以root用户登录服务器的客户端公钥加入到/root/.ssh/authorized_keys文件中,客户端登陆时,带上客户端的私钥信息,就可以完成认真并成功以root用户登录,我用的mobXterm工具,其他工具类似,链接选择私钥如下: 这样,就完成了只能公钥认证通过的用户才能登陆服务器的功能。 3. 注意事项 3.1. 保留会话窗口 在修改sshd_config文件并重启ssh之前,先保留一个链接到服务器的会话,否则如果ssh配置出现错误,将导致不能链接到服务器。 3.2. ssh配置文件 修改sshd_config而非ssh_config。 3.3. 为何不修改ssh默认的22端口 因为链接git仓库客户端较多,如果修改了22端口,每一个客户端都要重新设置代码仓库的remote地址,处理起来较为麻烦,如果如何处理请自行百度。当然为了更为安全,建议还是修改ssh默认的22端口。

2017-08-14 · 1 min · 41 words · 老墨

git从其他git服务器完整迁移到自建git服务器

1). 从原地址克隆一份裸版本库,原本托管于oschina。 git clone --bare git://github.com/username/project.git (1) 1 --bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。 2). 然后到新的 Git 服务器上创建一个新项目,比如commons。 mkdir commons.git cd commons.git git init --bare 上边的命令表示创建名为commons的版本库,并初始化为空版本库(注意--bare参数)。 3). 以镜像推送的方式上传代码到新的git服务器上。 git push --mirror git@<你的serverIp>:commons.git (1) 1 --mirror 克隆出来的裸版本对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步。 例如: $ git push --mirror git@192.168.0.106:/data/code/commons.git Counting objects: 100, done. Delta compression using up to 4 threads. Compressing objects: 100% (54/54), done. Writing objects: 100% (100/100), 44.88 KiB | 0 bytes/s, done. Total 100 (delta 13), reused 100 (delta 13) To 192.168.0.106:/data/code/commons.git * [new branch] master -> master ...

2017-06-08 · 1 min · 98 words · 老墨