看影片:GIT101 branch 到最後
Git 的平行時空:branch
給我一個新的宇宙:git branch
看現在有哪些 branch: git branch -v
在 git 裡面,主要的 branch 叫做 master
開一條新的 branch: git branch 接你要的名稱
刪除 branch: git branch -d 名稱
跨越宇宙:git checkout
切換 branch: git checkout branch名稱
當兩個宇宙合併:git merge
在 master 位置下,把 A branch 合併進 master branch: git merge A
當世界崩塌:conflict
如果檔案衝突,進去檔案裡面修正,存檔以後再 commit 一次就解決了。
GitHub:全球最大工程師交友平台
我跟 Git 到底什麼關係?
repository: 一個放 git 版本控制的倉庫
Git: 一個可以做版本控制的程式
GitHub: 一個網站,可以放 git repository
GitHub 導覽:視覺化的 repository
issue: 專案有問題,可以開一個 issue
contributor: 有誰一起協作
如何把 code 放上 GitHub
把電腦裡 master 那個 branch 放上 GitHub: git push origin -u master
* 要先在 GitHub 開一個新的 repository,接著再電腦執行上述程式碼
接著就可以在 GitHub 那個網頁看到你剛剛推上去的資料了
我就是潮流:git push
本地更改,更新到 GitHub: git push origin branch 名字(master)
跟隨潮流:git pull
下載 GitHub 最新的版本:git pull origin branch 名字 (master)
* 如果有衝突,就用 merge 那個方法解決
抓到你了:git clone
要怎麼把 GitHub 上面的東西抓下來:
有一個綠色按鈕,按下載;
複製網址,到 terminal 執行git clone 網址
把 GitHub 上面的 repository 複製一份:fork -> 選自己帳號
GitHub 整合實戰
一、在 GitHub 上面新建一個 repository
二、把本地的東西 push 放上 GitHub
三、若有更動本地的東西,要記得再 push 上 GitHub 做更新;GitHub 如果有變動的話,就 pull 下來
四、pull request: 把兩個 branch 合併;其實就是在 GitHub 做 merge,可以直接看到檔案的變動
五、若要開始寫專案,或與別人協作專案:
第一步先 fork 別人的專案 -> 開新 branch -> 先 push 回自己的 repository -> 再發起一個 pull reques -> 把你寫的 branch merge 回去原本的專案
免費的網頁空間:GitHub Pages
把你的 GitHub 變成靜態網頁的感覺
setting -> GitHub pages -> source 下面選要放哪,按 save -> 就會產生一個網頁
* 優點是可以看到網頁與程式碼
工程師之間的協作:GitHub Flow
在本地端要更新資料上 GitHub 之前,要先確認本地端的專案是最新版本,否則會更新失敗
pull request: 把本地新的 branch push 上 GitHub 以後,再到 GitHub 做 pr,把剛剛的 branch 合併進 master
在 file changed 這裡可以加上評論,在任一行程式碼前面按下綠色的加號,可以針對該行程式碼做評論
review chagnes -> approve -> submit 然後就可以 merge,完成以後記得把舊的 branch 刪掉
GitHub 的死對頭們:GitLab 與 Bitbucket
Bitbucket: 該有的功能都有,感覺介面比較像網路硬碟格式
GitLab: merge request = pull request
Git 狀況劇
commit 完以後想改 commit message: git commit --amend
這個指令好像在呼叫上帝,Amen
* 如果已經 commit 又 push 了,那就乖乖認命吧,這種情形下你在 local 端改的話可能會造成其他人的困擾。
commit 後悔了怎麼辦?
不要最新的 commit,回到到上一個,但是改過的檔案還是在:git reset HEAD^
或者是這個 git reset 流水號
刪除上一個 commit(所有的東西): git reset HEAD^ --hard
參考資料:Git reset 的三種模式( soft mixed hard )比較
還沒 commit,但改的東西不想要了
git checkout -- 檔名
就可以回到上一步了
git checkout -- .
把專案裡面改過但還沒 commit 的檔案,都回到改之前的狀態
改 branch 名字
先到那個錯的 branch 底下,然後輸入指令 git branch -m 想改的名字
把遠端的 branch 抓下來
git checkout branch 名稱
客製化各個階段:Git hook
Git hook 簡介加簡單示範
在 push 或 commit 之前檢查程式碼有沒有符合規範、有沒有放到不該放的密碼等等
感覺是一個自動檢查系統,如果通過就可以 commit,沒通過就會被擋下來
* 在 .git 裡面有個資料夾叫做 hooks,裡面有各式各樣的懶人包(commit message, pre commit ),裡面有說明要怎麼使用
* 我覺得蠻實用的,有一個自動預防機制防止做錯
總結
- 以資料夾比喻為 Git,是比較接近的說法,但是背面的運作跟資料夾是有差別的
- Git 是一個易學難精的東西,比較進階的有 rebase, cherry-pick, tag...目前只學了最常用的 80%
我覺得每天記錄時間運用很有幫助耶,一方面是知道自己時間到底花到哪裡去了,另一方面也是對自己誠實,但缺點就是寫在筆記上有些東西不好意思寫得太詳細,所以我決定每天寫在我的 evernote 裡面。
上課到最後一個單元精神有點渙散,應該是累了,肚子痛今天好多了,這禮拜四可能要再做麻婆豆腐,明天晚上大概吃乾麵吧。
今天感謝:感謝可以參加這個計畫,感謝 Huli 開這門課,感謝我還可以變胖,哈哈哈哈哈。
筆記還是有點亂,一邊複習一邊想要怎麼改好了。