[MTR04] W1 D3 Git 進階指令


Posted by Christy on 2020-06-15

看影片: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 開這門課,感謝我還可以變胖,哈哈哈哈哈。

筆記還是有點亂,一邊複習一邊想要怎麼改好了。










Related Posts

模組化與 Library

模組化與 Library

[第十一週] XSS 攻擊

[第十一週] XSS 攻擊

Day 3 - 了解 Git 及 GitHub

Day 3 - 了解 Git 及 GitHub


Comments