Git就是版本控制的軟體
好的版本控制需考量檔案本身版本、release note版本、多人協作。
- git init 初始化(開始用git)
- git status 查看git的狀態
- git add 把需要版本控制的檔案加入git,成為staged狀態;不要版本控制的可以用git rm --cached 移除,成為untracked狀態。可以用git add .一次把資料夾內的所有檔案都加入版本控制
- git commit 新建版本,可以加 -m "描述commit message"。當檔案在staged區,可以用 -am ""把修改的檔案一起add+commit。commit當作是新建資料夾,一個commit=一個資料夾的意思,通常是完成一個小進度才會commit。
- git --amend 修改commit message
- git HEAD^ 回到上一個commit,有分--hard跟--soft,前者是把新的commit直接刪掉回到先前的commit,後者是讓你可以去改新commit的內容(改完再commit)
- git log 看有哪些commit跟資訊
- git checkout 回到之前的某一版本(後面+commit版本號);git checkout master就回到這個分支的最新版本;git checkout -- XXX 可以把未commit的內容刪掉 (可用git status看怎麼用)
- .gitignore 把沒有要加入版本控制的檔案放在這。先用touch .gitignore新增檔案,再用vim .gitignore打開輸入檔名並存檔
- git diff 在commit前看差異(改了什麼)
- git hook 通常是用在commit and push前檢查程式碼是否符合規範、有沒有改到什麼不該改的檔案、哪些內容沒移除掉等
- git push origin master 把修改好也commit完的code推到github (前面還有一行指令是連結到github,建立repository時會有指示,要自己手動push)
- git pull origin master 把github上改好的檔案下載到本地端,若本地端跟github上有變更過相同檔案,也可能出現conflit
- git clone XX@XXX 把想要下載的repository連結貼上,就可以下載到本地端
github上的fork可以把別人的repository複製到自己的帳號底下,這樣下載到本地端後,有修改就可以push回去 - github內的pull request就等於merge branch的意思,好處在於可以看到檔案的差異跟變化
BRANCH
- 可以平行時空做不同的事情(e.g. 修bug、開發新功能),等到都ok後可以再merge成一個版本發布
- 通常git init一開始就會有自動建一個叫master的branch
- git branch -v 看現在有的branch
- git branch XXX 新增branch,XXX就是新branch名稱
- git branch -d XXX 刪掉XXX branch
- git branch -m XXX 改branch名稱
- git checkout branch名稱 切換到不同的branch,即使是遠端的也可以直接這樣抓下來本地端
- git merger branch名稱 當我在master branch時,把另一branch merge到master branch內
- 當兩個branch改到相同的command line,要merge時會發生conflict,需手動調整conflict的部分再commit即可成功merge。git會顯示衝突的部分在哪
Github pages
github可以用來當成自己作品集的展示(網頁)
Github flow 有任何改動(新功能等):
- 建立branch
- commit
- pull request
- review
- deploy and merge