当前位置: 首页 > 科技观察

管理主目录的7个Git技巧

时间:2023-03-17 19:53:11 科技观察

以下是我如何设置Git来管理我的主目录。我有几台电脑。工作笔记本电脑、家用工作站、RaspberryPi(或四台)、PocketCHIP、运行各种Linux版本的Chromebook等。我曾经在每台计算机上遵循或多或少相同的步骤来设置我的用户环境,我经常告诉自己让每台电脑都略有不同。例如,我在工作中使用Bash别名比在家里更频繁,而且我在家里使用的帮助脚本可能对工作没有用。多年来,我对各种设备的期望开始融合,我忘记了我在家用电脑上构建的功能并没有移植到我的工作电脑上,诸如此类。我需要一种方法来标准化我的自定义工具包。令我惊讶的答案是Git。Git是版本跟踪软件。它以用于非常大和微型的开源项目而闻名,甚至被最大的专有软件公司使用。但它是为源代码设计的,而不是为充满音乐和视频文件、游戏、照片等的主目录而设计的。我听说有人使用Git来管理他们的主目录,但我认为这是程序员的一个副实验,而不是像我这样的真实用户。使用Git管理我的主目录是一个不断发展的过程。随着时间的推移,我一直在学习和适应。如果您决定使用Git来管理您的主目录,您可能需要记住以下几点。1.文本和二进制位置主目录当由Git管理时,您的主目录对于除配置文件以外的所有内容都是“无人区”。这意味着当您打开您的主目录时,您只会看到一个可预测的目录列表。不应有任何杂乱无章的照片或LibreOffice文档,或“我将在此处放置一分钟”的临时文件。原因很简单:当你使用Git管理你的主目录时,你的主目录中所有未提交的内容都变成了噪音。每次执行gitstatus时,都必须检查之前未被Git跟踪的所有文件,因此将这些文件保存在子目录中(添加到.gitignore文件中)至关重要。许多Linux发行版提供一组默认目录:文档下载音乐照片模板视频您可以根据需要创建更多目录。例如,我区分我创作的音乐(音乐)和我买来听的音乐(专辑)。同样,我的Cinema目录中包含其他人的电影,而Videos目录中包含我需要编辑的视频文件。换句话说,我的默认目录结构比大多数Linux发行版提供的默认目录结构更冗长,但我认为这样做有好处。如果没有适合你的目录结构,你会把它存放在你的home目录中,因为没有更好的地方存放它,所以请提前考虑并规划一个适合你的工作目录。您以后可以随时添加更多内容,但最好先从您擅长的内容开始。2.设置最佳.gitignore清理您的主目录后,您可以像往常一样将其实例化为Git存储库:$cd$gitinit。您的Git存储库中还没有任何内容,并且您的主目录的所有内容都未被跟踪。您的第一项工作是筛选未跟踪文件列表并确定您想要保持未跟踪的文件。要查看未跟踪的文件:$gitstatus.AndroidStudio3.2/.FBReader/.ICEauthority.Xauthority.Xdefaults.android/.arduino15/.ash_history[...]根据您使用主目录的时间长短,此列表可能会很长。Simple是您在上一步中确定的目录。通过将它们添加到名为.gitignore的隐藏文件中,您告诉Git停止将它们列为未跟踪文件,并且永远不会跟踪它们:$\ls-lg|grep^d|awk'{print$8}'>>一旦~/.gitignore完成,浏览gitstatus显示的剩余未跟踪文件并确定是否有任何其他文件需要排除。这个过程帮助我发现了几个我最终完全丢弃的陈旧配置文件和目录,以及一些特定于一台机器的配置文件和目录。我在这里非常严格,因为许多配置文件在自动生成时表现得更好。例如,我从不提交我的KDE配置文件,因为许多文件包含诸如最新文档和其他机器上不存在的其他元素等信息。我跟踪我的个人配置文件、脚本和实用程序、配置文件和Bash配置,以及备忘单和我经常引用的其他文本片段。如果有软件主要负责维护的文件,请忽略它们。当不确定文件时,我会忽略它。您以后可以随时取消忽略它(通过将其从.gitignore文件中删除)。3.了解你的数据我使用KDE,所以我使用开源扫描仪Filelight来概览我的数据。Filelight为您提供了一个图表,让您可以看到每个目录的大小。您可以浏览每个目录以查看占用空间的内容,然后回溯到其他地方进行调查。这是一个引人入胜的系统视图,可让您以全新的方式查看文件。Filelight使用Filelight或类似的实用程序来查找不需要提交的意外数据缓存。例如,KDE文件索引器(Baloo)会生成大量特定于其主机的数据,我绝对不想将其传输到另一台计算机。4.不要忽略你的.gitignore文件在一些项目中,我告诉Git忽略我的.gitignore文件,因为有时我想忽略的是特定于我的工作目录的,我不认为同一个项目上的其他开发人员需要我告诉他们.gitignore文件应该是什么样子。因为我的主目录仅供我使用,所以我不会忽略我的主目录的.gitignore文件。我将它与其他重要文件一起提交,因此它在我的所有系统中都被继承了。当然,从主目录的角度来看,我的所有系统都是相同的:它们具有相同的默认文件夹集和许多相同的隐藏配置文件。5.不要担心二进制文件我已经对我的系统进行了数周的严格测试,并且确信将二进制文件提交给Git绝非明智之举。我尝试过GPG加密密码文件,尝试过LibreOffice文档、JPEG、PNG等。我什至有一个脚本可以在将LibreOffice文件添加到Git之前解压缩LibreOffice文件,从中提取XML,以便只提交XML,然后重建LibreOffice文件,以便我可以继续在LibreOffice中工作。我的理论是提交XML将使Git存储库比使用ZIP文件更小(LibreOffice文档实际上是一个ZIP文件)。令我惊讶的是,我发现偶尔提交一些二进制文件并没有显着增加我的Git存储库的大小。我已经使用Git很长时间了,我知道如果我要提交千兆字节的二进制数据,我的存储库会受到影响,但偶尔提交一些二进制文件并不是不惜一切代价避免的紧急情况。有了这种信心,我将字体OTF和TTF文件添加到我的标准主存储库,以及GDM的.face文件和其他偶尔出现的小型二进制blob文件。不要想太多,也不要浪费时间试图避免它。只需提交。6.使用私人仓库即使主办方提供了私人账户,也不要将你的主目录提交到公共Git仓库。如果你像我一样,你有SSH密钥、GPG钥匙串和GPG加密文件,这些文件不应该在任何人的服务器上,而是在我的服务器上。我在RaspberryPi上运行本地Git服务器(这比您想象的要容易),因此我可以在家中随时更新任何计算机。我是一名远程工作者,所以这通常就足够了,但我也可以在旅行时通过VPN访问我的计算机。7.请记住,推送Git的特性是它只会在您告诉它推送更改时才将更改推送到您的服务器。如果您是Git的老用户,这个过程对您来说可能很自然。对于可能习惯了Nextcloud或Syncthing自动同步的新用户来说,这可能需要一些时间来适应。Git主目录使用Git管理我经常使用的文件不仅让我在不同设备上的生活更轻松。知道我拥有所有配置和实用程序脚本的完整历史,这鼓励我尝试新想法,因为如果出现问题,很容易回滚我的更改。Git使我免于.bashrc文件中构思不当的umask设置,免于深夜拙劣地添加包管理脚本,免于修补当时看起来很酷的rxvt配色方案,也许还有其他一些错误。在您的主目录中尝试Git,因为这些提交会将主目录整合在一起。