用 Git 幫助寫作者更好地完成工作
Git 是一個少有的能將如此多的現代計算封裝到一個程序之中的應用程序,它可以用作許多其他應用程序的計算引擎。雖然它以跟蹤軟體開發中的源代碼更改而聞名,但它還有許多其他用途,可以讓你的生活更輕鬆、更有條理。在這個 Git 系列中,我們將分享七種鮮為人知的使用 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 在軟體存儲庫或 ports 樹中可用。你使用的命令將根據你的發行版而有所不同。例如在 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.
![An image will render here.](drawing.jpg)
從示例中可以看出,Markdown 讀起來感覺不像代碼,但可以將其視為代碼。如果你遵循 CommonMark 定義的 Markdown 規範,那麼一鍵就可以可靠地將 Markdown 的文字轉換為 .docx、.epub、.html、MediaWiki、.odt、.pdf、.rtf 和各種其他的格式,而不會失去格式。
你可以認為 Markdown 有點像文字處理程序的樣式。如果你曾經為出版社撰寫過一套樣式來控制章節標題及其樣式,那基本上就是一回事,除了不是從下拉菜單中選擇樣式以外,你需要給你的文字添加一些小記號。對於任何習慣「以文字交談」的現代閱讀者來說,這些表示法都是很自然的,但是在呈現文本時,它們會被精美的文本樣式替換掉。實際上,這就是文字處理程序在後台秘密進行的操作。文字處理器顯示粗體文本,但是如果你可以看到使文本變為粗體的生成代碼,則它與 Markdown 很像(實際上,它是更複雜的 XML)。使用 Markdown 可以消除這種代碼和樣式之間的阻隔,一方面看起來更可怕一些,但另一方面,你可以在幾乎所有可以生成文本的東西上書寫 Markdown 而不會丟失任何格式信息。
Markdown 文件流行的文件擴展名是 .md。如果你使用的平台不知道 .md 文件是什麼,則可以手動將該擴展名與 Atom 關聯,或者僅使用通用的 .txt 擴展名。文件擴展名不會更改文件的性質。它只會改變你的計算機決定如何處理它的方式。Atom 和某些平台足夠聰明,可以知道該文件是純文本格式,無論你給它以什麼擴展名。
實時預覽
Atom 具有 「Markdown 預覽」 插件,該插件可以向你顯示正在編寫的純文本 Markdown 及其(通常)呈現的方式。
![Atom's preview screen](/data/attachment/album/201910/24/223010rk60a96xhxyy32xk.jpg "Atom's preview screen")
要激活此預覽窗格,請選擇「包 > Markdown 預覽 > 切換預覽」 或按 Ctrl + Shift + M
。
此視圖為你提供了兩全其美的方法。無需承擔為你的文本添加樣式的負擔就可以寫作,而你也可以看到一個通用的示例外觀,至少是以典型的數字化格式顯示文本的外觀。當然,關鍵是你無法控制文本的最終呈現方式,因此不要試圖調整 Markdown 來強制以某種方式顯示呈現的預覽。
每行一句話
你的高中寫作老師不會看你的 Markdown。
一開始它不那麼自然,但是在數字世界中,保持每行一個句子更有意義。Markdown 會忽略單個換行符(當你按下 Return
或 Enter
鍵時),並且只在單個空行之後才會創建一個新段落。
![Writing in Atom](/data/attachment/album/201910/24/223014onsn99mmbsbbmu7c.jpg "Writing in Atom")
每行寫一個句子的好處是你的工作更容易跟蹤。也就是說,假如你在段落的開頭更改了一個單詞,如果更改僅限於一行而不是一個長的段落中的一個單詞,那麼 Atom、Git 或任何應用程序很容易以有意義的方式突出顯示該更改。換句話說,對一個句子的更改只會影響該句子,而不會影響整個段落。
你可能會想:「許多文字處理器也可以跟蹤更改,它們可以突出顯示已更改的單個單詞。」但是這些修訂跟蹤器綁定在該字處理器的界面上,這意味著你必須先打開該字處理器才能瀏覽修訂。在純文本工作流程中,你可以以純文本形式查看修訂,這意味著無論手頭有什麼,只要該設備可以處理純文本(大多數都可以),就可以進行編輯或批准編輯。
誠然,寫作者通常不會考慮行號,但它對於計算機有用,並且通常是一個很好的參考點。默認情況下,Atom 為文本文檔的行進行編號。按下 Enter
鍵或 Return
鍵後,一行就是一行。
![Writing in Atom](/data/attachment/album/201910/24/223020gqnrcnfcqewn8c0l.jpg "Writing in Atom")
如果(在 Atom 的)一行的行號中有一個點而不是一個數字,則表示它是上一行摺疊的一部分,因為它超出了你的屏幕。
主題
如果你是一個在意視覺形象的人,那麼你可能會非常注重自己的寫作環境。即使你使用普通的 Markdown 進行編寫,也並不意味著你必須使用程序員的字體或在使你看起來像碼農的黑窗口中進行書寫。修改 Atom 外觀的最簡單方法是使用主題包。主題設計人員通常將深色主題與淺色主題區分開,因此你可以根據需要使用關鍵字「Dark」或「Light」進行搜索。
要安裝主題,請選擇「編輯 > 首選項」。這將在 Atom 界面中打開一個新標籤頁。是的,標籤頁可以用於處理文檔和用於配置及控制面板。在「設置」標籤頁中,單擊「安裝」類別。
在「安裝」面板中,搜索要安裝的主題的名稱。單擊搜索欄位右側的「主題」按鈕,以僅搜索主題。找到主題後,單擊其「安裝」按鈕。
![Atom's themes](/data/attachment/album/201910/24/223027kxpepdyzvexy5dhc.jpg "Atom's themes")
要使用已安裝的主題或根據喜好自定義主題,請導航至「設置」標籤頁中的「主題」類別中。從下拉菜單中選擇要使用的主題。更改會立即進行,因此你可以準確了解主題如何影響你的環境。
你也可以在「設置」標籤的「編輯器」類別中更改工作字體。Atom 默認採用等寬字體,程序員通常首選這種字體。但是你可以使用系統上的任何字體,無論是襯線字體、無襯線字體、哥特式字體還是草書字體。無論你想整天盯著什麼字體都行。
作為相關說明,默認情況下,Atom 會在其屏幕上繪製一條垂直線,以提示編寫代碼的人員。程序員通常不想編寫太長的代碼行,因此這條垂直線會提醒他們不要寫太長的代碼行。不過,這條豎線對寫作者而言毫無意義,你可以通過禁用 「wrap-guide」 包將其刪除。
要禁用 「wrap-guide」 軟體包,請在「設置」標籤中選擇「折行」類別,然後搜索 「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 上是 Explorer),然後拖放文件到你的項目文件夾。
在 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 選項卡最底部的「 分支 」圖標,以創建新的分支。
![Creating a branch](/data/attachment/album/201910/24/223031eu1q44jqujijla5u.jpg "Creating a branch")
通常將第一個分支命名為 master
,但不是必須如此;你可以將其命名為 firstdraft
或任何你喜歡的名稱,但是遵守當地習俗有時會使談論 Git(和查找問題的答案)變得容易一些,因為你會知道有人提到 「master」 時,它們的真正意思是「主幹」而不是「初稿」或你給分支起的什麼名字。
在某些版本的 Atom 上,UI 也許不會更新以反映你已經創建的新分支。不用擔心,做了提交之後,它會創建分支(並更新 UI)。按下 「 提交 」 按鈕,無論它顯示的是 「 創建脫離的提交 」 還是 「 提交到主幹 。
提交後,文件的狀態將永久保留在 Git 的記憶之中。
歷史記錄和 Git 差異
一個自然而然的問題是你應該多久做一次提交。這並沒有正確的答案。使用 Ctrl + S
保存文件和提交到 Git 是兩個單獨的過程,因此你會一直做這兩個過程。每當你覺得自己已經做了重要的事情或打算嘗試一個可能會被幹掉的瘋狂的新想法時,你可能都會想要做次提交。
要了解提交對工作流程的影響,請從測試文檔中刪除一些文本,然後在頂部和底部添加一些文本。再次提交。 這樣做幾次,直到你在 Git 標籤的底部有了一小段歷史記錄,然後單擊其中一個提交以在 Atom 中查看它。
![Viewing differences](/data/attachment/album/201910/24/223038tqz0u100mqwquiua.jpg "Viewing differences")
查看過去的提交時,你會看到三種元素:
- 綠色文本是該提交中已被添加到文檔中的內容。
- 紅色文本是該提交中已從文檔中刪除的內容。
- 其他所有文字均未做更改。
遠程備份
使用 Git 的優點之一是,按照設計它是分散式的,這意味著你可以將工作提交到本地存儲庫,並將所做的更改推送到任意數量的伺服器上進行備份。你還可以從這些伺服器中拉取更改,以便你碰巧正在使用的任何設備始終具有最新更改。
為此,你必須在 Git 伺服器上擁有一個帳戶。有幾種免費的託管服務,其中包括 GitHub,這個公司開發了 Atom,但奇怪的是 GitHub 不是開源的;而 GitLab 是開源的。相比私有軟體,我更喜歡開源,在本示例中,我將使用 GitLab。
如果你還沒有 GitLab 帳戶,請註冊一個帳戶並開始一個新項目。項目名稱不必與 Atom 中的項目文件夾匹配,但是如果匹配,則可能更有意義。你可以將項目保留為私有,在這種情況下,只有你和任何一個你給予了明確許可權的人可以訪問它,或者,如果你希望該項目可供任何互聯網上偶然發現它的人使用,則可以將其公開。
不要將 README 文件添加到項目中。
創建項目後,它將為你提供有關如何設置存儲庫的說明。如果你決定在終端中或通過單獨的 GUI 使用 Git,這是非常有用的信息,但是 Atom 的工作流程則有所不同。
單擊 GitLab 界面右上方的 「 克隆 」 按鈕。這顯示了訪問 Git 存儲庫必須使用的地址。複製 「SSH」 地址(而不是 「https」 地址)。
在 Atom 中,點擊項目的 .git
目錄,然後打開 config
文件。將下面這些配置行添加到該文件中,調整 url
值的 seth/example.git
部分以匹配你自己獨有的地址。
[remote "origin"]
url = git@gitlab.com:seth/example.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
在 Git 標籤的底部,出現了一個新按鈕,標記為 「 提取 」。由於你的伺服器是全新的伺服器,因此沒有可供你提取的數據,因此請右鍵單擊該按鈕,然後選擇「 推送 」。這會將你的更改推送到你的 GitLab 帳戶,現在你的項目已備份到 Git 伺服器上。
你可以在每次提交後將更改推送到伺服器。它提供了即刻的異地備份,並且由於數據量通常很少,因此它幾乎與本地保存一樣快。
撰寫而 Git
Git 是一個複雜的系統,不僅對修訂跟蹤和備份有用。它還支持非同步協作並鼓勵實驗。本文介紹了一些基礎知識,但還有更多關於 Git 的文章和整本的書,以及如何使用它使你的工作更高效、更具彈性和更具活力。 從使用 Git 完成小任務開始,使用的次數越多,你會發現自己提出的問題就越多,最終你將學到的技巧越多。
via: https://opensource.com/article/19/4/write-git
作者:Seth Kenlon 選題:lujun9972 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive