GYWANG | Git 指令列筆記
本筆記是GYWANG整理平常在使用git指令列操作時常用的指令,給習慣使用指令列的朋友當作翻閱的筆記,或是給予想要學習使用指令列的朋友們對常用語法有基本的認識 ~ ~
git init
初始化數據庫(repository),對要上git的目錄下這個指令,讓此目錄底下的內容連上git
git init
git add
將所選的資料加入索引
git add
git add a.py # 只加入a.py這個檔案進索引
git add . # 加入該目錄底下的所有檔案進索引
git commit
將放在索引的檔案提交成一個新版本的commit
git commit
git commit -m "加入a.py" # 將在索引內的檔案commit出去,且寫下註解 "加入a.py"
git 檔案追蹤機制
圖片來源: W3HexSchool
git branch
查看目前有哪些分支
git branch
git branch <分支名稱>
新增分支
git branch develop
git checkout <分支名稱>
切換分支名稱
git checkout master
git checkout develop
git status
查看目前該分支內add、commit的狀況
git status
git log
查看版本紀錄
git log
git remote add <網址>
將本地端知道要跟哪一個遠端的repository相通
git remote add https://github.com/110407SchoolProject/backend.git
git push <數據庫簡稱> <分支名稱>
將commit的紀錄從本地端推送到遠端
git push origin master
git pull
從遠端下載更新的檔案(不是整個Repository)
git pull
git clone <複製的網址>
將需要的數據庫(Repository)下載下來
git clone https://github.com/110407SchoolProject/backend.git
git merge <分支名稱>
圖片來源: W3HexSchool
如上圖,當有兩條分支的時候,分支dev比master分支快兩個commit,此時,分支master想要合併(merge)到跟develop同一個commit位置,就可以在分支master下 “git merge dev”,意思就是說分支master想要跟dev合併,完成後,兩條分支的commit進度就相同如下圖。
圖片來源: W3HexSchool
git merge dev
git 分支合併 快轉模式(fast-forward)
圖一,分支master目前位置C2( commit兩次),此時,產生一條新的分支叫做dev
圖二,分支dev到C4的位置(新增兩個commit),master則維持在原本的C2位置。
圖三,現在,分支dev比master快兩次的commit紀錄,master想要合併到跟dev同樣的commit紀錄。然而,因為master在分支dev做了兩次的commit之後沒有再做任何的commit紀錄,依舊停留在原本產生分支dev的C2位置,所以當現在master想要合併dev的紀錄時,就會觸發快轉模式 (fast forward)
git 分支合併 非快轉模式(non-fast-forward)
圖片來源: W3HexSchool
圖一,與上方快轉模式不同的點在於,當分支dev的commit到C4的位置時,master並非沒有動作,反而新增了一個或以上的commit,此時從圖一上可以看出目前master是指向C5的位置。
圖片來源: W3HexSchool
圖二,所以現在當master想要跟分支dev合併以取得dev的C3、C4紀錄時,就會觸發非快轉模式,最後master會產生出一個新的C6位置。
註: master有6個commit資料,分支dev則只有C1到C4的commit資料,如想要分支dev也同步到C6,切換到分支dev下指令git merge master 即可。
註: master有6個commit資料,分支dev則只有C1到C4的commit資料,如想要分支dev也同步到C6,切換到分支dev下指令git merge master 即可。
參考文獻
六角學院W3HexSchool