git是一種分布式版本控制系統,它可以不受網絡連接配接的限制,加上其它衆多優點,目前已經成為業界做項目版本管理時的首選。
2013年,淘寶前端團隊開始全面采用git來做項目管理,我也是那個時候開始接觸和使用git,到目前剛好3年時間。git的api很多,但其實平時項目中90%的需求都隻需要用到幾個基本的功能即可,是以本文将從 實用主義 和 深入探索 2個方面去談談如何在項目中使用git,一般來說,看完 實用主義 這一節就可以開始在項目中動手用了,我以多年的使用經驗保證你放心使用。
鑒于我對mac的厚愛,是以本文隻以mac來講述,windows使用者可自行腦補畫面(或者讓老闆給你買個mac吧^_^)。
安裝好git後,打開指令行工具(這裡我用的是mac自帶的 terminal),進入工作檔案夾(為了便于了解我們在系統桌面上示範),建立一個新的demo檔案夾。
一切就緒,接下來進入本文的重點。
所謂實用主義,就是掌握了以下知識就可以玩轉git,輕松應對90%以上的需求。
以下是實用主義型的git指令清單,先大緻看一下
git clone git config git branch git checkout git status git add git commit git push git pull git log git tag .gitignore
接下來,将通過對我在github上的閱讀清單項目進行執行個體操作,講解如何使用git拉取代碼到送出代碼的整個流程。
代碼下載下傳完成後在目前檔案夾中會有一個 reading-list 的目錄,通過 "cd reading-list/" 指令進入目錄。
每次代碼送出的時候都會生成一條送出記錄,其中會包含目前配置的使用者名和郵箱。
建立一個名為 daily/0.0.0 的日常開發分支,分支名隻要不包括特殊字元即可。
如果覺得之前的分支名不合适,可以為建立的分支重命名,重命名分支名為 daily/0.0.1
通過不帶參數的branch指令可以檢視目前項目分支清單
如果分支已經完成使命則可以通過 -d 參數将分支删除,這裡為了繼續下一步操作,暫不執行删除操作
切換到daily/0.0.1分支,後續的操作将在這個分支上進行
通過任何你喜歡的編輯器對項目中的 readme.md 檔案做一些改動,比如我增加一行文字“1. :book: javascript 架構設計”,儲存
通過 git status 指令可以看到檔案目前狀态 changes not staged for commit: (改動檔案未送出到暫存區)
通過指定檔案名 readme.md 可以将該檔案添加到暫存區,如果想添加所有檔案可用 git add . 指令,這時候可通過 git status 看到檔案目前狀态 changes to be committed: (檔案已送出到暫存區)
通過 -m 參數可直接在指令行裡輸入送出描述文本
origin 指代的是目前的git伺服器位址,這行指令的意思是把 daily/0.0.1 分支推送到伺服器,當看到指令行傳回如下字元表示推送成功了。
現在我們回到github網站的項目首頁,點選 branch:master 下拉按鈕,就會看到剛才推送的 daily/00.1 分支了
如果其它項目成員對項目做了改動并推送到伺服器,我們需要将最新的改動更新到本地,這裡我們來模拟一下這種情況。
進入github網站的項目首頁,再進入 daily/00.1 分支,線上對 readme.md 檔案做一些修改并儲存,然後在指令中執行以上指令,它将把剛才線上修改的部分拉取到本地,用編輯器打開 readme.md ,你會發現檔案已經跟線上的内容同步了。
如果線上代碼做了變動,而你本地的代碼也有變動,拉取的代碼就有可能會跟你本地的改動沖突,一般情況下git會自動處理這種沖突合并,但如果改動的是同一行,那就需要手動來合并代碼,編輯檔案,儲存最新的改動,再通過 git add . 和 git commit-m 'xxx' 來送出合并。
通過以上指令,我們可以檢視整個項目的版本送出記錄,它裡面包含了送出人、日期、送出原因等資訊,得到的結果如下:
送出記錄可能會非常多,按 j 鍵往下翻,按 k 鍵往上翻,按 q 鍵退出檢視
當我們完成某個功能需求準備釋出上線時,應該将此次完整的項目代碼做個标記,并将這個标記好的版本釋出到線上,這裡我們以 publish/0.0.1 為标記名并釋出,當看到指令行傳回如下内容則表示釋出成功了
.gitignore不是git指令,而在項目中的一個檔案,通過設定 .gitignore 的内容告訴git哪些檔案應該被忽略不需要推送到伺服器,通過以上指令可以建立一個 .gitignore 檔案,并在編輯器中打開檔案,每一行代表一個要忽略的檔案或目錄,如:
以上内容的意思是git将忽略 demo.html檔案 和 build/ 目錄,這些内容不會被推送到伺服器上
通過掌握以上這些基本指令就可以在項目中開始用起來了,如果追求實用,那關于git的學習就可以到此結束了,偶爾遇到的問題也基本上通過 google 也能找到答案,如果想深入探索git的高階功能,那就敬請期待下一期 深入探索 吧。
歡迎大家關注我的微信公衆号,将不定期推送前端開發相關原創文章