如何同时进行多篇文章的翻译-GCTT 项目

magichan · · 980 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

[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.git Cloning 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 7443 Receiving 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_1 git 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 upstream git 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》 都不错的方式。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

980 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传