2022/03/10 (新增影片連結)
2022/03/29 (新增連結)
2022/04/14 (新增連結)
2022/04/22 (新增連結)
2022/04/28 (新增連結)
2022/05/06 (新增連結)
2023/03/04 (補充內容)
2024/04/30 (更新連結)
2022/04/28 (更新投影片)
在github開帳號
如果使用google登入,還是要設定帳號、密碼,否則無法直接跟github溝通
在gitlab開帳號
如果使用google登入,還是要設定帳號、密碼,否則無法直接跟gitlab溝通
下載git
git init
Git Clone
Stage changes (利用vs code)
Commit
Push
Conflict
Branch
Git是個分散式版本管理系統 (Version Control System),所以,使用Git的使用者都會擁有一份完整的程式碼。Git本身並沒有權限管控,所以,一般而言,會利用git server來協助權限管控。如果不想自己架設git server,可以使用git雲端服務。常用的git雲端服務有:github、 gitlab、 bitbucket。這三個雲端服務的主要差別在於過去在github免費的專案都必須是公開的,所以,目前大部分的open source專案都可以在github上找到,不過,目前也可以有免費的私密專案。在gitlab上,目前不管是公開或私密的專案都是免費的。在bitbucket上,允許5個成員以下的小專案(不管是公開或私密)免費使用 (2017/4/11起提供教育單位免費免限制的使用)。Bitbucket在權限的管控上比較完整,有四個層級:Global、Project、Repository、Branch (詳參: 4 Levels of Bitbucket Server Permissions)。
Github可以創建一個組織(Organization),在組織裡,新增的repository,同一個組織裡的人都可以使用。
Github上創建Organization
邀請協作成員
創建Repository
更改成員權限為write
clone Repository測試push and pull
當使用git時,我們會有本地資料庫(local repository)及遠端資料庫(remote repository),通常我們會把遠端資料庫(remote repository)設在git server上。
git新手入門教學 (陳學義學長 deeplink分享) **
Git (分享使用的notion內容)
Git基本介紹
Windows/Linux/MacOS 安裝Git
Git基本指令、名詞
將本地repo提交至遠端repo (Github為例)
使用Code Editor(以Visual Studio Code為例) 實際操作Git
Github介紹 (王曉瑜學姊提供)
建立git專案
提交新版本
將專案上傳到github
與隊友協作
分支
discard uncommited changes
撤銷提交內容
.gitignore
GitHub Pages
patch
六角學院 Git、GitHub 教學 (38部影片)
1 為什麼要學Git (簡筠庭學姊推薦)
2 Git 安裝流程 (安裝git、申請github、安裝Sourcetree)
git init
接下來,要進行本地端的設定,首先,先安裝git。本地端可以下載git for Windows或者Download for macOS 。使用macOS時,如果已經安裝過XCode,git就已經安裝,可直接使用。如果安裝過homebrew,建議利用homebrew安裝。
安裝
建議透過Homebrew安裝,未來很多開發的工具都可以透過Homebrew安裝
安裝好之後,要做一些設定,首先,在命令列下設定使用者的名字與email。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
首先,要在git server(github或gitlab)上建帳號 (詳參:http://dylandy.github.io/Easy-Git-Tutorial/ (github) 或 學習版本控制基礎 - Git & Gitlab)並開好repository及設定好repository的權限,通常,每個repository會有一個URL,利用這個URL來存取repository。
接下來就是連接遠端資料庫,可以利用clone指令
$ git clone https://gitlab.com/benwu/web.git
clone下來之後,會在剛剛的路徑下產生一個資料夾。請利用vscode打開該資料夾。如果vs code無法識別這是個git專案,那就表示,打開錯誤的資料夾,或者是還沒有初始化這個git專案。
要有一位同學(如:組長)先利用git init建立local repository。要讓git了解這個專案是個git專案,就要先進行初始化。這時候,會產生一個.git的隱藏資料夾,在這裡面會有git所需要的檔案 (本地資料庫),如果沒有進行這個步驟,git就不認得這個專案。記得,這個動作只要做一次,重複進行會把原本的紀錄刪除重建。這些動作可以利用指令,也可以直接在vs code中執行。
$ git init
如果在vscode的terminal裡無法下git指令,請切換到Git Bash terminal
接下來就是連接遠端資料庫,這個指令的意思是設定遠端資料庫,add是新增一個遠端資料庫,origin是遠端資料庫的名稱 (你可以用其他的名稱),後面是遠端資料庫的URL。
$ git remote add origin https://gitlab.com/benwu/web.git
並將專案commit到local repository,然後再將local repository的內容push到remote repository (在git server上)。完成後,就可以在git server上看到專案的內容了。
接下來,進行git的基本操作,第一件事是設定哪些檔案已經完成。通常會利用編輯器裡的功能,如果要利用指令,會使用git add,如果要將這個資料夾裡的所有檔案都設定為已經完成,可以下:
$ git add .
如果只是一個檔案 (如:index.html)
$ git add index.html
或者所有的html檔案
$ git add *.html
如果想知道那些檔案被加入,可以利用:
$ git status
Commit是將剛剛的更動儲存到本地的資料庫,如果要利用指令,會使用git commit,並且會設定這次更動內容的註解,例如:「home page」。
$ git commit -m "home page"
Push是將更動從本地資料庫送到遠端資料庫,注意,如果沒有設定好遠端,會無法進行push。
$ git push
如果你有多個遠端,也可以指定遠端,例如:origin
$ git push origin
如果無法push就是還沒指定好push的遠端分支,-u就是幫我們把遠端分支記錄下來,未來可以直接下push,origin就是我們遠端(remote)的名稱,master就是我們指定的分支
$ git push -u origin master
其他同學會利用Clone Repo下載專案,然後,利用pull下載內容,更改程式,將更動的部份設為staged,再利用commit放到local repository,利用push將內容上傳。
$ git clone https://gitlab.com/benwu/web.git
現在的版本管理軟體都支援分支(branch)的概念,原本是讓程式開發者能依據不同的使用者(如:公司或單位)開發不同的版本,不過,現在即使是只開發一個版本,也常使用分支。首先,每個repository會有一個稱為"master"的分支。通常,我們會維持master為最終穩定版本。為避免影響目前的最終穩定版本,當每位同學要開始進行修改時,會先產生一個新分支,當這個分支被完整測試後,再合併(merge)回master。這樣的話,就比較不會因為某一位同學push有問題的程式碼而造成大家都找不到最終穩定版本 (詳參: 什麼是分支?)。
所以,當任何一位同學修改專案內容前,先產生一個分支,在改完之後,將更動的部份設為staged,就可以進行Commit and Push,將更動的內容送到remote repository給其他同學,其他同學可以利用Pull下載最新的更動。如果有多人同時更動同一檔案,也可以比對各版本的內容。
新建分支的指令就是利用git branch,例如要加個ben的分支,可以:
$ git branch ben
切換分支
$ git checkout ben
或者,這時候,會從現在的分支建立一個分支,並且切換到該分支。
$ git checkout -b ben
如果想切換到其他的分支,例如:master
$ git checkout master
切換分支之後,所有的commit、psuh、pull就是針對該分支進行。
如果不清楚自己在哪個branch,可以利用git branch來看現在在哪個分支上:
$ git branch
當我們要把benwu合併到原本的master時,我們要先切換回master,再去進行合併:
$ git checkout master
$ git merge ben
當同組的同學新增一個分支時,如果我們在local會看不到新分支(假如遠端資料庫的名稱是origin),可以使用:
$ git fetch origin
就可以看到遠端的新分支,並且可以切換到新分支了
使用VS Code的Git功能 (2016)
在GitHub上建立儲存庫(Repository)
在GitHub建立Repository
Clone GitHub的Repository到本機端
使用VS Code開啟該目錄
使用VS Code執行基本的操作
檔案狀態
Untracked->Unstaged->Staged->Unstaged-Staged
Commit
Branch
與遠端Repository互動
Push 、 Pull 、Sync(Push & Pull)
VSCode中使用Git (2019, react更詳細)
Git (吳濟聰老師敏捷軟體開發課程教材)
當使用Gitlab時,為了保持某些branch(如:master)的完整性,系統會有protected branch的功能,第一、避免protected branch被任意產生,第二,避免protected branch被更動(push),第三、避免protected branch被強迫更動(force pushing),第四、避免protected branch被刪除。在setting下,選擇repository,下面可以找到protected branch的設定。
解決方案:1.設定開發者(developer)及管理者(masters)可以merge,這樣的話,所有的更動都應該,先新增branch,等確定之後,合併(m,erge)回master(最好的做法)。2.可以開發者(developer)及管理者(masters)可以push,這樣的話,還可以管制protected branch的產生與刪除。3.可以將該branch改為unprotected (最不好的做法)。