如何同時進行多篇文章的翻譯-GCTT 項目
來源:互聯網
上載者:User
[GCTT](https://github.com/studygolang/GCTT) 項目的工作流程為: 選題->翻譯->提交->校正->發布。如果譯者每次都按照此流程完成一篇譯文,再翻譯下一篇的時,只要在 `master` 這個分支上進行簡單操作即可。有時候,可能同時進行幾篇文章的翻譯,如果都在 Master 分支上工作,就有可能出現這樣的情況:![](https://github.com/studygolang/gctt-images/blob/master/how-to-translate-multi-article-in-the-same-period-of-time/1.png?raw=true)一個 PR 提交了多篇文章,這和流程中的『PR 請只包含一篇文章的翻譯成果』的要求是衝突。對於熟悉 Git 開發流程人來說,是一個很簡單的問題,利用 Git 的分支。下面我們會介紹這種方法: ## Fork studygolang/GCTT 倉庫![](https://github.com/studygolang/gctt-images/blob/master/how-to-translate-multi-article-in-the-same-period-of-time/2.png?raw=true)成功 Fork 後,你會在自己的帳號下,發現 GCTT 的倉庫。![](https://github.com/studygolang/gctt-images/blob/master/how-to-translate-multi-article-in-the-same-period-of-time/3.png?raw=true)## 下載自己的倉庫的 master 分支到本地> `anonymous2123` 為我們的測試帳號,你可以將 `anonymous2123` 替換成你自己的帳號運行以下命令。```λ git clone https://github.com/anonymous2123/GCTT.gitCloning into 'GCTT'...remote: Counting objects: 7459, done.remote: Compressing objects: 100% (11/11), done.remote: Total 7459 (delta 5), reused 14 (delta 5), pack-reused 7443Receiving objects: 100% (7459/7459), 12.65 MiB | 973.00 KiB/s, done.Resolving deltas: 100% (4979/4979), done.```## 利用分支翻譯一個重要的原則是,**一個分支只對應一篇文**,這裡隱藏了一個問題,分支應該從哪裡建立出來,我們的建議是保持 master 分支不動,所有的翻譯分支都從 master 分支建立出來。[瞭解更多關於分支](https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E4%BD%95%E8%B0%93%E5%88%86%E6%94%AF)建立 `trans_article_1` 分支,並切換到該分支```git branch trans_article_1git checkout trans_article_1```或者使用 `-b` 參數一步達成```git checkout -b trans_article_1```接下來,就可以在該分支進行翻譯。翻譯完成後,將工作提交到分支之中。在正式推送到 Github 之前,你需要保證和 studygolang/GCTT 是同步的,以防止在提出 PR 的時候出現衝突。```git remote add upstream https://github.com/studygolang/GCTT.git // 只需要第一次做,之後不需要該步驟git fetch upstreamgit rebase upstream/master```將 `trans_article_1` 分支推動到你的 Github 倉庫中,並以此在 Github 中建立相應的分支。```git push -f origin trans_article_1```Github 的效果如下,有 `master` 和 `trans_article_1` 兩個分支:![](https://github.com/studygolang/gctt-images/blob/master/how-to-translate-multi-article-in-the-same-period-of-time/4.png?raw=true)最後,你只需要像在 `master` 分支一樣,在 `trans_article_1` 分支向 `studygolang/GCTT` 提出 PR 請求。![](https://github.com/studygolang/gctt-images/blob/master/how-to-translate-multi-article-in-the-same-period-of-time/5.png?raw=true)## 利用分支進行多篇翻譯當你同時進行另一篇翻譯的時候,你需要回到 `master` 分支下,再建立一個新分支 `trans_article_2`。注意不要在 `trans_article_1` 中建立 `trans_article_2` 分支。如此做,就意味著你把你上一篇翻譯的文章引入到這一篇的分支中,在提交 PR 時,就會出現兩篇文章,這不滿足『PR 請只包含一篇文章的翻譯成果』的要求。```git checkout master git checkout -b trans_article_2```在 `trans_article_2` 分支中,執行相同的流程: 翻譯,commit,與 studygolang/GCTT 同步,提交到 Github 中,提出 PR,最後完成翻譯。## 總結以上的流程中,你有幾篇文章,就有會幾個分支,每一個分支都會向 studygolang/GCTT 提出自己 Pull Request。如果你需要修訂你某一分支的提交,並不會影響其他分支。這隻是 Git&Github 的很小的一個應用情境,如果你想瞭解更多關於 Git 的知識,Git 的官方文檔,或是 《Pro Git》 都不錯的方式。76 次點擊