You don’t have to get fancy to get most of your work done with Git; start with these essential commands
用 git 工作你不需要趕流行用什麼特技,只要用這些基本指令就好。
You don’t have to get fancy to get most of your work done with Git; start with these essential commands
用 git 工作你不需要趕流行用什麼特技,只要用這些基本指令就好。
大多數公司都用 git,不只為了開發商業或消費性 app。科學與政府組織也有好理由,所以這些技術越來越常被使用。
git 允許漸進式合作,快速散佈,為程式碼建立信心,三個都是很重要的目標,所以很多團隊納為 devops 的手法。為了要達成這些目標,許多 git 平台包含整合工具支援程式碼測試與團隊管理。
就算 git 變得無所不在,仍有一些在觀望。 GitLab 最近有個調查,發現 40% 的開發團隊憂心 git 的學習曲線。自然地,在 GitLab,我每天用它工作,我了解 git 對新使用者的挑戰。
幸運的是,有大量的資源可以幫助新使用者克服他們的焦慮。許多公司,包含我們自己,都有免費資源給想要學習的開發者。除了公司主導的資源外,git 也有很多社群技援,分享許多常見問題的解法。
保持簡單
要了解 git,最好要知道它是從命令列來的。但是,有經驗的 git 使用者喜歡客戶端有簡易介面讓易用性提高。Git Tower 與 Tortoise Git 就是非常好的客戶端程式。
好消息是,多數開發者可以只學幾個基本指令就可以處理大多數的工作。與 repo 同步、建立新分支、建立新增與提交,把改變推回遠端等,這幾個工作,使用以下會提到的七個命令就可以做到。git 不需要搞得太複雜。
切換到主分支
git checkout master
這個 git checkout
讓你在分支間移動,並回復檔案。git checkout master
會切換到主線,這是你要改東西之前最好的出發點。
拿到最近的更新
git pull origin master
一但你切到主線,你可以用 git pull origin master
保證你的分支裡的東西是repo的裡最新的。這是通常在合併上游改變之後要做的事。git pull
實際上是合併了git fetch
(這是把最後資訊抓回來) 與git merge
(這把兩個歷史合併)這兩個命令。基本上,git pull origin master
讓你一次做兩個命令,這非常省時間。
在一個 repo 開始工作前,執行一次 git pull origin master
是個好主意。畢竟,在協作過程中,你會想要確定你的 repo 跟遠端最新的是一樣的內容。
擴展你的分支
git checkout -b branchname
這個命令用來建立新的分支,分支名是 “branchname”,然後移動過去。
分支是 git 的基礎功能。想要開個新功能嗎?輸入git checkout -b new-feature
,建立一個新分支叫做”new-feature”,然後開啟它。這個新分支讓你平行開發,與你的同事之間是一個,你自己是另一個分支,程式碼分開,不會互相干擾。
當你準備好要分享你的工作成果,你可以把分支推去遠端或是合併到新分支(通常是主線),這些指令馬上來說明…。
當你需要知道狀況
git status
讓 git 告訴你現在你的 repo 的狀況。例如,git 會指出哪些檔案有改變過或是你的分支新增的。然後 git 會給予建議該怎麼做,提供指令如何 stage 或 commit 這些檔案。
為了下一步準備
git add
這個指令會在工作目錄加入一個改變,使得它放到台面(也就是標記為改變的一部份)。這個改變可以是移除或新增一個檔案或目錄。這是提交改變的準備步驟。實際的動作已經做完了,但這個命令只是正式申明這些改變要被提交。
如果你對所有改變都很滿意,你可以加上 -all
選項,git add -all
會標明所有這個工作目錄與子目錄的改變,包含目錄的移除。
記錄你的改變
git commit
這個命令會記下你的改變,放在本地端 repo。不要與git push
搞混,接下來會解釋。你也可以使用git commit
刪除檔案,用些迂迴的方式來做。
git 是個整包的提交,也就是說提交是個改變(裡面會包含此次所有的新增、刪除、更新)。git commit
會把之前用git add
記為改變的提交出去。這個改變是記在本地 repo。要分享出去就一定要推到遠端。
分享你的改變
git push
執行這個命令會推送你的改變到遠端,有數個方式你可以調整。單純git push
這個指令,會改變 repo 與它的所有相關。
git push <remote> <branchname>
這指令會推送本地端 的改變到,它通常是你協作同事的伺服器。預設,第一個 remote 叫做 “origin”,如果你在 “new-feature” 分支有改變,你可以下 git push origin new-feature
,把改變(提交)送到你協作同事的地方。
你完全可以用以上的指令把 git 相關工作搞定。通常開發者會遇到困難是因為他們想用複雜指令像是git rebase
而把事情搞得太複雜,而導致不清楚自己在做什麼以及是否有必要搞這些。
當有疑問的時候,執行git status
,讓 git 告訴你。