git 删除git管理
Git是那些设法将大量现代计算封装到一个程序中的罕见应用程序之一,最终成为许多其他应用程序的计算引擎。 尽管它最着名的是跟踪软件开发中的源代码更改,但它还有许多其他用途,可以使您的生活更轻松,更有条理。 在4月7日Git成立14周年之前的系列文章中,我们将分享7种鲜为人知的Git使用方法。 今天,我们将研究使用Git跟踪您的日历。
使用Git跟踪时间表
如果时间本身不过是可以管理和版本控制的源代码怎么办? 虽然证明或证明这种理论可能不在本文讨论范围之内,但您可能会像对待源代码一样对待时间并在Git的帮助下管理您的日程安排。
日历的统治者是CalDAV协议,该协议驱动了诸如NextCloud之类的流行开源日历应用程序以及流行的封闭源应用程序。 CalDAV没错(注释,请注意)。 但这并不适合每个人,此外,除了单一文化之外,没有什么比它更具启发性。
因为我没有兴趣对很大程度上依赖于GUI的CalDAV客户端进行投资(尽管如果您正在寻找一个好的终端CalDAV查看器,请参阅khal ),所以我开始研究基于文本的替代方案。 基于文本的日历在工作的所有常见的好处明文 。 它轻巧,高度便携,并且只要结构化,就易于解析和美化(无论对您意味着什么美感 )。
最重要的是,这正是Git旨在管理的内容。
组织模式不可怕
如果您不在明文上加上结构,则很快就会陷入现成的想法和恶魔般的关心符号的混乱之中。 幸运的是,存在一种用于日历的标记语法,它包含在古老的Emacs模式Eorgs模式或Org模式下 (承认,您一直打算开始使用它)。
许多人没有意识到的有关Org模式的神奇之处在于, 您无需了解甚至使用Emacs即可利用Org模式建立的约定。 如果确实使用Emacs,则将获得许多出色的功能,但是如果Emacs吓到了您,则无需安装Emacs就可以实现基于Git的Org模式日历系统。
您需要了解的组织模式的唯一部分是其语法。 组织模式的语法维护成本低且相当直观。 使用Org模式而不是GUI日历应用程序进行日历的最大区别是工作流程:创建日历清单,然后每天分配一次,而不是去日历并查找要安排任务的日期。
组织模式下的列表使用星号(*)作为项目符号。 这是我的游戏任务列表:
* Gaming
** Build Stardrifter character
** Read Stardrifter rules
** Stardrifter playtest
** Blue Planet @ Mike's
** Run Rappan Athuk
*** Purchase hard copy
*** Skim Rappan Athuk
*** Build Rappan Athuk maps in maptool
*** Sort Rappan Athuk tokens
如果您熟悉CommonMark或Markdown,您会注意到,组织模式不使用空格来创建子任务,而是更明确地使用其他项目符号。 无论您使用列表的背景如何,这都是一种建立列表的直观,简便的方法,显然它与Emacs并没有固有的联系(尽管使用Emacs为您提供了快捷方式,因此您可以快速重新排列列表)。
要将列表变成日历中的预定任务或事件,请返回并添加关键字SCHEDULED以及(可选) :CATEGORY:。
* Gaming
:CATEGORY: Game
** Build Stardrifter character
SCHEDULED: <2019-03-22 18:00-19:00>
** Read Stardrifter rules
SCHEDULED: <2019-03-22 19:00-21:00>
** Stardrifter playtest
SCHEDULED: <2019-03-25 0900-1300>
** Blue Planet @ Mike's
SCHEDULED: <2019-03-18 18:00-23:00 +1w>
and so on...
SCHEDULED关键字将条目标记为您希望收到的事件,而可选的:CATEGORY:关键字是您自己使用的任意标记系统(在Emacs中,您可以根据类别对条目进行颜色编码)。
对于重复事件,您可以使用诸如+ 1w来创建每周事件或使用+ 2w来表示每两周事件的表示法,等等。
已记录了组织模式下所有可用的高级标记,因此请随时寻找更多技巧来满足您的需求。
放入Git
没有Git,您的组织模式约会只是本地计算机上的一个文件。 不过,这是21世纪,因此您至少需要在手机上使用日历,即使不是在所有个人计算机上也需要。 您可以使用Git为自己和他人发布日历。
首先,为您的.org文件创建目录。 我将我的存储在〜/ cal中 。
$ mkdir ~/cal
转到您的目录并使其成为Git存储库:
$ cd cal
$ git init
将您的.org文件移动到本地Git存储库。 实际上,我为每个类别维护一个.org文件。
$ mv ~/*.org ~/cal
$ ls
Game.org Meal.org Seth.org Work.org
暂存并提交文件:
$ git add *.org
$ git commit -m 'cal init'
创建一个Git遥控器
要使日历在任何地方都可用,您必须在互联网上有一个Git存储库。 您的日历是纯文本的,因此任何Git存储库都可以。 您可以将日历放在GitLab或任何其他公共Git托管服务(甚至是专有的)上,只要您的主机允许,您甚至可以将存储库标记为私有。 如果您不希望您的日历发布到你无法控制的服务器,很容易主机一个Git仓库自己,或者使用纯仓库为单个用户或使用像一个前端服务Gitolite或Gitea 。
为了简单起见,我将假设一个自托管的裸Git存储库。 您可以使用一个Git命令在具有SSH访问权限的任何服务器上创建一个裸露的远程存储库:
$ ssh -p 22122 seth@example.com
[remote]$ mkdir cal.git
[remote]$ cd cal.git
[remote]$ git init --bare
[remote]$ exit
这个光秃秃的存储库可以用作Internet上日历的主页。
将其设置为本地(在计算机上,而不是服务器上)Git存储库的远程源:
$ git remote add origin seth@example.com:/home/seth/cal.git
然后将日历数据推送到服务器:
$ git push -u origin HEAD
将日历保存在Git存储库中,即可在运行Git的任何设备上使用。 这意味着您可以对日程安排进行更新和更改,并将更改推送到上游,以便随时随地更新。
我使用这种方法来使日历在工作笔记本电脑和家庭工作站之间保持同步。 由于我一天中的大部分时间每天都在使用Emacs,因此能够在Emacs中查看和编辑日历非常方便。 对于大多数拥有移动设备的人来说,情况也是如此,因此下一步就是在移动设备上设置组织模式日历系统。
移动Git
严格来说,由于日历数据是纯文本格式,因此您可以在可以读取文本文件的任何设备上“使用”它。 这就是该系统之美的一部分。 至少您永远不会没有原始数据。 但是要将日历以期望现代日历工作的方式集成到移动设备上,您需要两个组件:移动Git客户端和移动组织模式查看器。
Git手机客户端
MGit是Android的良好Git客户端。 也有适用于iOS的Git客户端。
安装MGit(或类似的Git客户端)后,必须克隆日历存储库,以便手机具有副本。 要从移动设备访问服务器,必须设置SSH密钥进行身份验证。 MGit可以为您生成并存储密钥,您必须将其添加到服务器的〜/ .ssh / authorized_keys文件或托管的Git帐户设置中的SSH密钥中。
您必须手动执行此操作。 MGit没有界面可以登录到您的服务器或托管的Git帐户。 如果不这样做,则移动设备将无法访问服务器以访问日历数据。
我是通过将MGit中生成的密钥文件通过KDE Connect复制到我的笔记本电脑来实现的(但是您可以通过蓝牙,SD卡读卡器或USB电缆来完成此操作,具体取决于您访问数据的首选方法)电话)。 我使用以下命令将密钥(一个名为calkey的文件复制到了我的服务器:
$ cat calkey | ssh seth@example.com "cat >> /home/seth/.ssh/authorized_keys"
您可能有不同的方法,但是如果您将服务器设置为无密码登录,则此过程完全相同。 如果您使用的是托管的Git服务(如GitLab),则必须将密钥文件的内容复制并粘贴到用户帐户的“ SSH密钥”面板中。
![将密钥文件数据添加到GitLab Adding key file data to GitLab](https://i-blog.csdnimg.cn/blog_migrate/050b5df521d387642805fa03490c7de5.png)
完成后,您的移动设备可以授权您的服务器,但是仍然需要知道在哪里可以找到您的日历数据。 不同的应用程序可能使用不同的表示法,但是MGit使用的是普通的旧式SSH over Git。 这意味着,如果您使用的是非标准SSH端口,则必须指定要使用的SSH端口:
$ git clone ssh://seth@example.com:22122//home/seth/git/cal.git
![在MGit中指定SSH端口 Specifying SSH port in MGit](https://i-blog.csdnimg.cn/blog_migrate/14d99a47cf99ce3a1091d91bef865316.jpeg)
如果使用其他应用程序,则可能使用不同的语法,该语法允许您在特殊字段中提供端口或删除ssh://前缀。 如果遇到问题,请参考应用程序文档。
将存储库克隆到您的手机。
![克隆存储库 Cloned repositories](https://i-blog.csdnimg.cn/blog_migrate/c001b8a8d5c98983931135b11ba9a905.png)
很少有Git应用程序设置为自动更新存储库。 您可以使用一些应用程序来自动执行拉动,也可以设置Git挂钩来推送服务器中的更新-但我在这里不做介绍。 目前,在更新日历后,请确保在MGit中手动拉出新更改(或者,如果您更改手机上的事件,则将更改推送到服务器上)。
![MGit推/拉设置 MGit push/pull settings](https://i-blog.csdnimg.cn/blog_migrate/3da9d9273f0e19857d7c20b3f4f1d8ff.png)
手机日历
有几种不同的应用程序可为移动设备上的组织模式提供前端。 Orgzly是一款出色的开源Android应用程序,可提供从议程模式到TODO列表的组织模式最大功能的界面。 安装并启动它。
从主菜单中,选择设置同步存储库,然后选择包含日历文件的目录(即,从服务器克隆的Git存储库)。
请稍等片刻以导入数据,然后使用Orgzly的汉堡包菜单选择“议程”视图。
![Orgzly的议程视图 Orgzly's agenda view](https://i-blog.csdnimg.cn/blog_migrate/3ddb669af17d6f150822324a474036fd.png)
在Orgzly的“设置提醒”菜单中,您可以选择哪些事件类型在手机上触发通知。 您可以获取有关计划任务, 截止日期任务或分配了事件时间的任何内容的通知。 如果您将手机用作任务管理器,则永远不会错过使用Org模式和Orgzly进行的活动。
![组织通知 Orgzly notification](https://i-blog.csdnimg.cn/blog_migrate/54a722c0f04ea994a7578ecf80de1d95.png)
Orgzly不仅是解析器。 您可以编辑和更新事件,甚至将事件标记为DONE 。
![待办事项清单 Orgzly to-do list](https://i-blog.csdnimg.cn/blog_migrate/e5e5d5247a643ddf7f081165210213e2.jpeg)
专为您而设计
使用Org模式和Git时要了解的重要一点是,这两个应用程序都非常灵活,并且希望您可以自定义它们的方式和工作方式,以便它们可以适应您的需求。 如果本文中的某些内容是您如何安排生活或管理每周计划的冒犯,但您喜欢此提议提供的其他内容,请排除不喜欢的内容。 您可以根据需要在Emacs中使用组织模式,也可以将其用作日历标记。 您可以将手机设置为在一天结束时从计算机上直接提取Git数据,而不是从Internet上的服务器上获取数据,也可以将计算机配置为在插入手机时同步日历,或者可以每天进行管理您会在工作日为手机加载所有必需的东西。 这取决于您,这是有关Git,组织模式和开源最重要的事情。
git 删除git管理