Git 是那些罕见的应用程序之一,它成功地将现代计算的许多方面封装到一个程序中,以至于它最终成为许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名,但它还有许多其他用途,可以使你的生活更轻松、更有条理。在这个 Git 诞生 14 周年(4 月 7 日)之前的系列文章中,我们将分享七种鲜为人知的 Git 用法。今天,我们将看看作家们如何使用 Git 来更好地完成工作。
作家使用 Git
有些人写小说;另一些人写学术论文、诗歌、剧本、技术手册或关于开源的文章。许多人每样都写一点。共同点是,如果你是一名作家,你可能会从使用 Git 中受益。虽然 Git 以其高度技术性而闻名,并被计算机程序员使用,但它非常适合现代作家,本文将演示它如何改变你的写作方式——以及你为什么要这样做。
不过,在谈论 Git 之前,重要的是要谈谈什么是文案(或数字时代的内容)的真正含义,以及它为何与你的交付媒介不同。现在是 21 世纪,大多数作家选择的工具是计算机。虽然计算机在组合文案编辑和布局等流程方面出奇地出色,但作家们(重新)发现将内容与风格分离毕竟是一个好主意。这意味着你应该像使用打字机一样在计算机上写作,而不是文字处理器。用计算机术语来说,这意味着用纯文本写作。
用纯文本写作
过去,你可以安全地假设你知道你为哪个市场写作。你为一本书、一个网站或一本软件手册编写内容。但如今,市场已经扁平化:你可能会决定在你为网站编写的内容中用于印刷书籍项目,而印刷书籍可能会在稍后发布 EPUB 版本。并且在你的内容的数字版本的情况下,阅读你内容的人处于最终控制权:他们可能会在你发布内容的网站上阅读你的文字,或者他们可能会点击 Firefox 出色的 阅读视图,或者他们可能会打印到纸质文档,或者他们可以使用 Lynx 将网页转储到文本文件,或者他们可能根本看不到你的内容,因为他们使用屏幕阅读器。
将你的文字当作文字来写,将交付留给出版商是有道理的。即使你也是你自己的出版商,将你的文字视为你写作的某种源代码是一种更智能、更有效的工作方式,因为当需要出版时,你可以使用相同的来源(你的纯文本)来生成适合你的目标的输出(PDF 用于打印,EPUB 用于电子书,HTML 用于网站,等等)。
用纯文本写作不仅意味着你不必担心布局或文本的样式,而且你也不再需要专门的工具。任何可以生成文本的东西都成为你有效的“文字处理器”,无论是你的手机或平板电脑上的基本记事本应用程序,还是计算机自带的文本编辑器,或者是你从互联网上下载的免费编辑器。你几乎可以在任何设备上写作,无论你在哪里或在做什么,并且你生成的文本可以完美地与你的项目集成,无需修改。
而且,方便的是,Git 专门用于管理纯文本。
Atom 编辑器
当你用纯文本写作时,文字处理器就显得过分了。使用文本编辑器更容易,因为文本编辑器不会试图“有帮助地”重组你的输入。它可以让你将你脑海中的文字输入到屏幕上,没有干扰。更好的是,文本编辑器通常围绕插件架构设计,因此应用程序本身非常基础(它编辑文本),但你可以围绕它构建一个环境来满足你的所有需求。
这种设计理念的一个很好的例子是 Atom 编辑器。它是一个跨平台文本编辑器,内置 Git 集成。如果你是纯文本工作和 Git 的新手,Atom 是入门的最简单方法。
安装 Git 和 Atom
首先,确保你的系统上安装了 Git。如果你运行 Linux 或 BSD,Git 在你的软件仓库或端口树中可用。你使用的命令将因你的发行版而异;例如在 Fedora 上
$ sudo dnf install git
你还可以下载并安装适用于 Mac 和 Windows 的 Git。
你不需要直接使用 Git,因为 Atom 充当你的 Git 界面。安装 Atom 是下一步。
如果你在 Linux 上,请通过你的软件安装程序或适当的命令从你的软件仓库安装 Atom,例如
$ sudo dnf install atom
Atom 目前不在 BSD 上构建。但是,有非常好的替代方案可用,例如 GNU Emacs。对于 Mac 和 Windows 用户,你可以在 Atom 网站上找到安装程序。
安装完成后,启动 Atom 编辑器。
快速浏览
如果你要使用纯文本和 Git,你需要熟悉你的编辑器。Atom 的用户界面可能比你习惯的更具动态性。你可以把它更像 Firefox 或 Chrome,而不是文字处理器,事实上,因为它有选项卡和面板,可以根据需要打开和关闭,它甚至有你可以安装和配置的插件。试图涵盖 Atom 的所有众多功能是不切实际的,但你至少可以熟悉可能的功能。
当 Atom 打开时,它会显示一个欢迎屏幕。如果说有什么,这个屏幕很好地介绍了 Atom 的选项卡式界面。你可以通过单击 Atom 窗口顶部的选项卡上的“关闭”图标来关闭欢迎屏幕,并使用 文件 > 新建文件 创建一个新文件。
用纯文本工作与在文字处理器中工作有点不同,因此这里有一些关于如何以人类可以理解的方式编写内容以及 Git 和计算机可以解析、跟踪和转换内容的技巧。
用 Markdown 写作
如今,当人们谈论纯文本时,他们大多指的是 Markdown。Markdown 更像是一种风格而不是一种格式,这意味着它旨在为你的文本提供可预测的结构,以便计算机可以检测自然模式并智能地转换文本。Markdown 有许多定义,但最好的技术定义和速查表在 CommonMark 的网站上。
# Chapter 1
This is a paragraph with an *italic* word and a **bold** word in it.
And it can even reference an image.

正如你从示例中看到的那样,Markdown 并非旨在像代码那样阅读或感觉,但它可以被视为代码。如果你遵循 CommonMark 定义的 Markdown 的期望,那么你可以可靠地,只需单击一个按钮,就可以将你的写作从 Markdown 转换为 .docx、.epub、.html、MediaWiki、.odt、.pdf、.rtf 和十几种其他格式,而不会丢失格式。
你可以将 Markdown 想象成有点像文字处理器的样式。如果你曾经为出版商写作,并且有一组样式来控制章节标题和小节标题的外观,那么这基本上是同一件事,只不过你不是从下拉菜单中选择样式,而是向你的文本添加一些小注释。这些注释对于任何习惯“txt 语言”的现代读者来说看起来都很自然,但在呈现文本时会被替换为花哨的文本样式。事实上,这就是文字处理器在幕后秘密做的事情。文字处理器显示粗体文本,但如果你可以看到为使你的文本变为粗体而生成的代码,它会很像 Markdown(实际上是更复杂的 XML)。使用 Markdown,障碍被消除了,这乍一看更可怕,但另一方面,你可以在几乎任何生成文本的东西上编写 Markdown,而不会丢失任何格式信息。
Markdown 文件的常用文件扩展名是 .md。如果你的平台不知道 .md 文件是什么,你可以手动将扩展名与 Atom 关联,或者只使用通用的 .txt 扩展名。文件扩展名不会改变文件的性质;它只是改变了你的计算机决定如何处理文件的方式。Atom 和一些平台足够智能,知道文件是纯文本,无论你给它什么扩展名。
实时预览
Atom 具有 Markdown 预览 插件,它可以同时显示你正在编写的纯 Markdown 和它将(通常)呈现的方式。

要激活此预览窗格,请选择 Packages > Markdown Preview > Toggle Preview 或按 Ctrl+Shift+M。
此视图为你提供了两全其美的方案。你可以摆脱样式化文本的负担进行写作,但你也可以看到你的文本将是什么样子的常见示例,至少在典型的数字格式中是这样。当然,重点是你无法控制你的文本最终如何呈现,所以不要试图调整你的 Markdown 以强制你的渲染预览看起来像某种方式。
每行一句
你的高中写作老师永远不必看到你的 Markdown。
一开始可能不自然,但在数字世界中,保持每行一句更有意义。Markdown 忽略单行换行符(当你按下 Return 或 Enter 键时),并且仅在单个空行后创建新段落。

每行一句的优点是你的工作更容易跟踪。也就是说,如果你在一个段落的开头更改了一个词,那么如果更改仅限于一行而不是长段落中的一个词,则 Atom、Git 或任何应用程序都可以以有意义的方式突出显示该更改。换句话说,对一个句子的更改应该只影响该句子,而不是整个段落。
你可能会想,“许多文字处理器也跟踪更改,它们也可以突出显示已更改的单个单词。”但是这些修订跟踪器绑定到该文字处理器的界面,这意味着你无法在没有在该文字处理器前查看修订。在纯文本工作流程中,你可以在纯文本中查看修订,这意味着无论你手头有什么,只要该设备可以处理纯文本(并且大多数设备都可以),你都可以进行或批准编辑。
作家们确实通常不以行号来思考,但它是计算机的有用工具,并且最终是一个很好的通用参考点。Atom 默认对你的文本文档的行进行编号。只有在你按下 Enter 或 Return 键后,行才成为行。

如果某行有一个点而不是数字,则表示它是上一行的一部分,为你换行,因为它无法容纳在你的屏幕上。
主题化
如果你是一个视觉化的人,你可能会对你的写作环境的外观非常挑剔。即使你用纯 Markdown 写作,这并不意味着你必须使用程序员的字体或在让你看起来像程序员的黑色窗口中写作。修改 Atom 外观的最简单方法是使用 主题包。主题设计师通常区分深色主题和浅色主题,因此你可以使用关键字“深色”或“浅色”进行搜索,具体取决于你想要什么。
要安装主题,请选择 编辑 > 首选项。这将在 Atom 界面中打开一个新选项卡。是的,选项卡用于你的工作文档和配置和控制面板。在 设置 选项卡中,单击 安装 类别。
在 安装 面板中,搜索你要安装的主题的名称。单击搜索字段右侧的 主题 按钮以仅搜索主题。找到你的主题后,单击其 安装 按钮。

要使用你已安装的主题或自定义主题以满足你的偏好,请导航到你的 设置 选项卡中的 主题 类别。从下拉菜单中选择你要使用的主题。更改立即生效,因此你可以确切地看到主题如何影响你的环境。
你还可以在 设置 选项卡的 编辑器 类别中更改你的工作字体。Atom 默认为等宽字体,程序员通常更喜欢这种字体。但是你可以使用系统上的任何字体,无论是衬线字体、无衬线字体、哥特字体还是草书字体。无论你想花一天时间盯着什么看,这完全取决于你。
在一个相关的说明中,默认情况下,Atom 在其屏幕上绘制一条垂直标记线,作为编写代码的人的指南。程序员通常不想编写长代码行,因此这条垂直线提醒他们简化事情。然而,垂直线对作家没有意义,你可以通过禁用 wrap-guide 包来删除它。
要禁用 wrap-guide 包,请选择 设置 选项卡中的 Packages 类别,然后搜索 wrap-guide。找到该包后,单击其 禁用 按钮。
动态结构
在创建长文档时,我发现每章一个文件比在一个文件中写完整本书更有意义。此外,我没有用明显的语法 chapter-1.md 或 1.example.md 来命名我的章节,而是用章节标题或关键字来命名,例如 example.md。为了在未来为自己提供关于本书应如何组装的指导,我维护一个名为 toc.md(代表“目录”)的文件,我在其中列出我的章节的(当前)顺序。
我这样做是因为,无论我多么确信第 6 章不可能发生在第 1 章之前,但在我完成一本书之前,很少有一次我不交换一两个章节或小节的顺序。我发现从一开始就保持动态性有助于我避免重命名混乱,并且还有助于我不太死板地对待材料。
Atom 中的 Git
每位作家的两个共同点是,他们都在进行持久写作,并且他们的写作是一段旅程。你不会坐下来写作并完成最终草稿;根据定义,你有一个初稿。并且该草稿会经历修订,你每次都会仔细地以双份和三份保存,以防你的文件之一损坏。最终,你会得到你所谓的最终草稿,但很可能有一天你会回到它,要么是为了复活好的部分,要么是为了修复坏的部分。
Atom 中最令人兴奋的功能是其强大的 Git 集成。无需离开 Atom,你就可以与 Git 的所有主要功能进行交互,跟踪和更新你的项目,回滚你不喜欢的更改,集成来自协作者的更改等等。学习它的最佳方法是逐步完成它,所以这里是如何从写作项目的开始到结束在 Atom 界面中使用 Git。
首先:通过选择 视图 > 切换 Git 选项卡 来显示 Git 面板。这会导致 Atom 界面的右侧打开一个新选项卡。现在没什么可看的,所以暂时保持打开状态。
启动 Git 项目
你可以将 Git 视为绑定到一个文件夹。Git 目录之外的任何文件夹都不知道 Git,而 Git 也不知道它。Git 目录中的文件夹和文件将被忽略,直到你授予 Git 权限以跟踪它们。
你可以通过在 Atom 中创建一个新项目文件夹来创建一个 Git 项目。选择 文件 > 添加项目文件夹 并在你的系统上创建一个新文件夹。你创建的文件夹会显示在 Atom 窗口的左侧 项目面板 中。
Git 添加
右键单击你的新项目文件夹,然后选择 新建文件 以在你的项目文件夹中创建一个新文件。如果你有要导入到你的新项目中的文件,请右键单击该文件夹,然后选择 在文件管理器中显示 以在你的系统的文件查看器(Linux 上的 Dolphin 或 Nautilus,Mac 上的 Finder,Windows 上的资源管理器)中打开该文件夹,然后拖放你的文件。
在 Atom 中打开项目文件(你创建的空文件或你导入的文件)后,单击 Git 选项卡中的 创建仓库 按钮。在弹出的对话框中,单击 初始化 以将你的项目目录初始化为本地 Git 仓库。Git 会将 .git 目录(在你的系统的文件管理器中不可见,但在 Atom 中对你可见)添加到你的项目文件夹。不要被这迷惑了:.git 目录供 Git 管理,而不是你,因此你通常会远离它。但是在 Atom 中看到它很好地提醒你,你正在一个由 Git 主动管理的项目中工作;换句话说,当你看到 .git 目录时,修订历史记录是可用的。
在你的空文件中,写一些东西。你是一名作家,所以输入一些文字。它可以是你喜欢的任何一组文字,但请记住上面的写作技巧。
按 Ctrl+S 保存你的文件,它将显示在 Git 选项卡的 未暂存更改 部分中。这意味着该文件存在于你的项目文件夹中,但尚未提交到 Git 的范围。通过单击 Git 选项卡右上角的 暂存全部 按钮,允许 Git 跟踪你的文件。如果你使用过带有修订历史记录的文字处理器,你可以将此步骤视为允许 Git 记录更改。
Git 提交
你的文件现在已暂存。所有这些都意味着 Git 意识到该文件存在,并且意识到自上次 Git 意识到它以来它已被更改。
Git 提交将你的文件发送到 Git 的内部和永久存档中。如果你习惯于文字处理器,这类似于命名修订。要创建提交,请在 Git 选项卡底部的 提交 消息框中输入一些描述性文本。你可以含糊不清或俏皮,但如果你为未来的自己输入有用的信息会更有用,这样你就知道为什么要进行修订。
第一次进行提交时,你必须创建一个分支。Git 分支有点像替代现实,允许你从一个时间线切换到另一个时间线,以进行你可能想要或可能不想永远保留的更改。如果你最终喜欢这些更改,你可以将一个实验性分支合并到另一个分支中,从而统一你项目的不同版本。这是一个高级过程,不值得预先学习,但你仍然需要一个活动分支,因此你必须为你的第一次提交创建一个分支。
单击 Git 选项卡最底部的 分支 图标以创建一个新分支。

通常将你的第一个分支命名为 master。你不必这样做;你可以将其命名为 firstdraft 或你喜欢的任何名称,但遵守当地习俗有时可以使谈论 Git(和查找问题答案)更容易一些,因为你将知道当有人提到 master 时,他们真正指的是 master 而不是 firstdraft 或你分支的任何名称。
在某些版本的 Atom 上,UI 可能不会更新以反映你已创建新分支。不用担心;分支将在你进行提交后创建(并且 UI 更新)。按 提交 按钮,无论它显示 创建分离提交 还是 提交到 master。
一旦你进行了提交,你的文件的状态将永远保存在 Git 的内存中。
历史记录和 Git 差异
一个自然的问题是你应该多久进行一次提交。对此没有一个正确的答案。使用 Ctrl+S 保存文件和提交到 Git 是两个单独的过程,因此你将继续执行这两项操作。你可能希望在你感觉自己做了一些重要的事情或者即将尝试一个你可能想要退出的疯狂新想法时进行提交。
为了感受提交对你的工作流程的影响,请从你的测试文档中删除一些文本,并在顶部和底部添加一些文本。再次提交。执行几次此操作,直到你的 Git 选项卡的底部有一个小的历史记录,然后单击提交以在 Atom 中查看它。

在查看过去的提交时,你会看到三个要素
- 绿色文本是在进行提交时添加到文档中的。
- 红色文本是在进行提交时从文档中删除的。
- 所有其他文本都未触及。
远程备份
使用 Git 的优势之一是,按照设计,它是分布式的,这意味着你可以将你的工作提交到你的本地仓库,并将你的更改推送到任意数量的服务器以进行备份。你还可以从这些服务器中拉取更改,以便你碰巧正在使用的任何设备始终具有最新的更改。
为了使此工作正常进行,你必须在 Git 服务器上拥有一个帐户。有很多免费的托管服务,包括 GitHub,它是 Atom 的生产公司,但奇怪的是它不是开源的,还有 GitLab,它是开源的。我更喜欢开源而不是专有软件,因此我将在本示例中使用 GitLab。
如果你还没有 GitLab 帐户,请注册一个并启动一个新项目。项目名称不必与你在 Atom 中的项目文件夹匹配,但如果匹配可能会更有意义。你可以将你的项目设为私有,在这种情况下,只有你和你明确授权访问的任何人才能访问它,或者你可以将其设为公开,如果你希望互联网上偶然发现它的任何人都可以访问它。
不要向项目添加 README。
项目创建后,它会为你提供有关如何设置仓库的说明。如果你决定在终端中或使用单独的 GUI 使用 Git,那么这是很棒的信息,但是 Atom 的工作流程是不同的。
单击 GitLab 界面右上角的 克隆 按钮。这将显示你必须用于访问 Git 仓库的地址。复制 SSH 地址(而不是 https 地址)。
在 Atom 中,单击你的项目的 .git 目录并打开 config。将以下配置行添加到文件中,调整 seth/example.git 部分的 url 值以匹配你的唯一地址。
[remote "origin"]
url = git@gitlab.com:seth/example.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
在 Git 选项卡的底部,出现了一个新按钮,标记为 Fetch。由于你的服务器是全新的,因此没有数据供你获取,因此右键单击该按钮,然后选择 Push。这会将你的更改推送到你的 GitLab 帐户,现在你的项目已备份在 Git 服务器上。
将更改推送到服务器是你在每次提交后都可以做的事情。它提供即时的异地备份,并且由于数据量通常很小,因此它实际上与本地保存一样快。
写作和 Git
Git 是一个复杂的系统,除了修订跟踪和备份之外,还有更多用途。它实现了异步协作并鼓励实验。本文介绍了基础知识,但还有更多关于 Git 以及如何使用它使你的工作更高效、更具弹性和更具活力的文章和整本书籍。这一切都始于将 Git 用于小型任务。你使用得越多,你会发现自己提出的问题就越多,最终你会学到更多的技巧。
2 条评论