關(guān)于使用 Git 的問答集錦

前幾天翻譯組使用了 GitHub 進(jìn)行翻譯管理。之前接觸過 GitHub,僅限于接觸而已,頂多 star、watch 過項(xiàng)目而已。

于是咨詢了某位資深程序員。我只能說,如果你是他手下的小弟,你要是問了我這些問題,很可能就要被炒魷魚了。還好我是女的、又會(huì)賣萌,趁他心情不錯(cuò),多蠢的問題都問,攤手~

話說,用 Git 查看譯文和校對(duì)稿之間的不同,簡直是太棒了!不同點(diǎn)一目了然,刪除了什么、增加了什么,任何變動(dòng),都會(huì)標(biāo)注出來。通過看不同, 能知道自己的翻譯錯(cuò)誤和常見毛病。瞬間路轉(zhuǎn)粉,堅(jiān)定了我一定要搞定 GitHub 的決心,以后常常使用 GitHub。

問題一

fork 之后創(chuàng)建 brach,和直接在原項(xiàng)目中創(chuàng)建 brach,有什么區(qū)別?

回答:
對(duì)原項(xiàng)目來說,有時(shí)候第三方?jīng)]權(quán)限直接 push 或建立 branch。而 fork 之后就是自己的項(xiàng)目了,想做什么做什么。如果你可以直接在原項(xiàng)目中 push 或者創(chuàng)建 brach,說明管理員給你開放了權(quán)限。

問題二

什么是 push ?和 commit 有什么區(qū)別?

回答:
commit 是本地版本提交,push 提交到遠(yuǎn)程庫中。
pull 是拉下更新,push 是把本地庫更新提交到遠(yuǎn)程庫里。

問題三

push 和 sync按鈕 (GitHub Desktop 軟件中的一個(gè)按鈕)是一回事嗎?

Sync 按鈕

回答:
Sync 是 pull 加上 push。也就是說,用這個(gè)軟件,無法實(shí)現(xiàn)單獨(dú)的 push,必須同時(shí)進(jìn)行 push 和 pull,也就是這里的 Sync。終端(Terminal)中可以用命令行進(jìn)行 push(只 push,不 pull),強(qiáng)制提交。

問題四

創(chuàng)建分支(brach)和不創(chuàng)建分支有什么區(qū)別?或者說,創(chuàng)建分支有什么優(yōu)勢(shì)嗎?

回答:
分支是按需求來產(chǎn)生的。

Example 1

你原來翻譯的文章是這樣的:
“XX**********XX********”
然后你忽然覺得把 “XX” 替換成 “YY” 更好,或者你想自己添加一些別的東西,你就可以新建一個(gè)分支,在這個(gè)分支上是獨(dú)立,怎么改都行。最后覺得合適了,改完了,就可以把這個(gè)額外的分支合并到master 上。

Example 2

還有寫測(cè)試代碼的時(shí)候,不想改變?cè)嫉某绦虼a,但需要新添加一些測(cè)試部分的調(diào)試代碼,就新建個(gè)分支,在分支上寫測(cè)試,測(cè)試通過了, 直接切回去就可以了。

如果不創(chuàng)建分支,改完發(fā)現(xiàn)不合適,就得 rehead 到?jīng)]改之前的節(jié)點(diǎn),你改過的這部分工作就都被丟棄了,你下次又想改成"YY"了,就又得重來一遍。

多人合作的時(shí)候,你自己創(chuàng)建個(gè)分支,在自己的分支上提交不會(huì)影響別人,然后自己的工作差不多了, 再合并到主分支上,對(duì)大家都好。

問題五

那團(tuán)隊(duì)合作的時(shí)候,是不是一個(gè)人一個(gè)分支?有沒有三四個(gè)人共用一個(gè)分支的情況?

回答:
多人共用分支很容易產(chǎn)生沖突,兩個(gè)人同時(shí)修改一個(gè)文件的時(shí)候,問題也會(huì)比較多。
對(duì)分支而言,每天的新工作都可以創(chuàng)建一個(gè)分支,然后每天合并一次,或者需要的時(shí)候再合并。

問題六

分支只能合并到 master 上嗎

回答:
不是,任何兩個(gè)分支都可以合并在一起。各做各的,需要?jiǎng)e人的部分,再去和那人合并。

問題七

clone 和 pull 有什么區(qū)別?

回答:
clone 相當(dāng)于復(fù)制,把你的項(xiàng)目從遠(yuǎn)程庫里復(fù)制到本地。之后本地庫的每次改動(dòng),都需要 Sync(pull+push)來和遠(yuǎn)程庫更新同步。也就是說,clone 一次就結(jié)束了,不需要多次 clone。但是 Sync 會(huì)操作很多次,每次想和遠(yuǎn)程庫同步時(shí),都需要點(diǎn)擊 Sync。

再說幾句

commit 強(qiáng)制備注,贊一個(gè)。

前端翻譯項(xiàng)目示例

翻譯流程圖下圖:


前端翻譯組的流程圖說明

另外還有個(gè)事情提醒大家注意一下,尤其是已經(jīng)工作了的同學(xué),要記得改git里的user.name和user.email:
git config --local user.name='your Github name'
git config --local user.email='your Github email'

SwiftGG 翻譯組項(xiàng)目示例

譯者翻譯流程:

首先 fork 這個(gè)倉庫,請(qǐng)先從 master 分支上 git checkout -b translate 一個(gè)新的 translate 分支來翻譯文章。

在倉庫的主目錄中,新建自己負(fù)責(zé)翻譯的 Blog 文件夾。以后關(guān)于該 Blog 所有譯文都放置在對(duì)應(yīng)的文件夾中。

翻譯完成后去主倉庫開 issue,標(biāo)題為『翻譯文章中文標(biāo)題』,內(nèi)容粘貼上相應(yīng)的 commit 鏈接,將右邊的 Labels 標(biāo)簽修改為『待校對(duì)』,Assignees 選擇和自己組隊(duì)校對(duì)的小伙伴。

校對(duì)的小伙伴校對(duì)完成后,根據(jù)其修改意見(comment 形式)對(duì)譯文進(jìn)行修正,將 issue label 改為『待定稿』。

發(fā)送 Pull Request,注意:發(fā) PR 的時(shí)候請(qǐng)注意檢查,一個(gè) PR 只能有一篇文章,切勿兩篇或多篇 合并到一個(gè) PR。

校對(duì)者流程:

在接收到譯者分配的校對(duì)任務(wù)后,進(jìn)入主倉庫相關(guān) issue,將左側(cè) label 改為『校對(duì)中』。

進(jìn)入譯者的 commit 鏈接,通過添加 comment 的方式對(duì)譯者內(nèi)容進(jìn)行校對(duì)。

校對(duì)完成后,將 issue label 改為『校對(duì)完成』,并把 Assignees 重新指定給譯者。

翻譯流程圖.jpg

實(shí)戰(zhàn)經(jīng)驗(yàn)文集里記錄了我平時(shí)開發(fā)中遇到的一些經(jīng)驗(yàn),記錄是希望下次再遇到類似的問題,能夠迅速解決。不要重復(fù)在同一個(gè)事情上花時(shí)間搜索解決方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容