以下為自己整理的一些基本git操作的表格整理及說明,可以讓初學者做基礎的版本控管
-
版本控管系統 ( Version Control System )
-
Git 是一款版本控制軟體,而 GitHub 是一個商業網站,GitHub 的本體是一個 Git 伺服器
-
git是工具,github是網站,GitHub 的本體是一個 Git Server
新手上路,如有錯誤,請多指教!!謝謝~~~
git提交流程 | 指令意義 | new | old | from other | |||
git init | github創專案(先不要+README) | git clone http://github… | |||||
記住 clone(http://github…) | |||||||
unstaging area (working directory) (工作目錄) 在local |
echo "#標題">README.md (先創完專案在創README) |
||||||
↓ | git init 初始化 |
git init | 1. 讓git存檔專家進駐,創建一個新的repository,讓git開始對這個目錄進行版本控制 2. 新增.git檔,通常隱藏檔 |
||||
git add 把local檔案加至暫存區(Staging Area) |
git add . | 1. git add 指令把檔案從工作目錄移至暫存區 2. add all 專案裡的檔案 |
|||||
git add --all | add all 專案裡的檔案 | ||||||
git add *.cpp | add all 專案裡的cpp檔案 | ||||||
git add main.cpp | add main.cpp | ||||||
staging area(暫存區) 還在local |
|||||||
↓ | git commit 把暫存區的內容移往儲存庫(repository) |
git commit -m 'first' | 1. git commit 指令把暫存區的內容移至儲存庫 2. commit 暫存區的資料 3. -m 註解 'first' 註解內容 |
git commit -a -m 'second' | 1. 可以直接add+commit 2. a參數只對已經存在repository的檔案有效,對還是新加入的檔案是無效的 |
||
repository(儲存庫) 還在local |
|||||||
↓ | git remote 設定雲端 |
git remote add origin http://github… | 1. 設定好雲端github網址 2. remote 主要跟遠端有關的操作 3. add 加入一個遠端的節點 4. origin 一個代名詞,指的是後面github伺服器的位置(github網址是clone) 5. 如代名詞不存在則命名,如存在則到代名詞 |
git remote add origin http://github… | |||
git push 把儲存庫的內容推上雲端 |
git push -u origin master | 1. 將repository的資料push到origin雲端的master分支 2. 把 master 這個分支的內容,推向 origin 這個位置 3. 在 origin 那個遠端 Server 上,如果 master 不存在,就建立一個叫做 master 的同名分支 4. 但如果本來 Server 上就存在 master 分支,便會移動 Server 上 master 分支的位置,使它指到目前最新的進度上 5. -u 設定 upstream,它會指向並追蹤(track)某個分支 如果有設定,當下次執行 git push 指令的時候,它就會用來當預設值 |
git push | 如果第一步有-u,現在可以直接git push | git pull | 更新雲端版本(別人修改過) 1. git pull = git fetch + git merge 2. pull 指令其實就是去上線抓東西下來(Fetch),並且更新本機的進度(Merge)而已 |
|
git push origin master | 若沒-u每次都要重複git push origin master | git push -u origin master | git pull origin master | ||||
cloud(雲端) | |||||||
git 分支流程 | |||||||
branch 新增分支 checkout 切換分支 |
|||||||
最新的端點開分支 | (master) | git branch | 看所有支線 | ||||
(master) | git branch dev | 新增分支dev 從最新的端點開分支 |
|||||
(master) | git checkout dev | 切換到分支dev | |||||
(dev) | git add | 提交資料 | |||||
git commit | |||||||
從指定端點開分支 | (master) | git checkout old的位置 | 如果不想從最新的端點開分支,想從之前old的地方開分支,先把之前old端點的位置記下來,並切換到那 | ||||
(old) | git branch dev | ||||||
(old) | git checkout dev | ||||||
(dev) | |||||||
merge合併分支 | (dev) | git checkout master | 先切換到master分支 | ||||
(master) | git merge dev | 合併dev分支到master | |||||
delete刪除分支 | (dev) | git -d dev | 不行!因為你現在在dev底下,不能直接刪掉你底下 | ||||
(dev) | git checkout master | 要先切換到其他地方 | |||||
(master) | git -d dev | 才能把dev分支刪掉 | |||||
reset移出 | git reset -h HARD | reset全部 -h = --hard 放棄所有修改.回到上個commit完成後的版本 |
|||||
git reset HARD 檔案名稱 | 將已經在repository的檔案移出staging area | ||||||
git rm --cached 檔案名稱 | 將已經在repository的檔案移出staging area | ||||||
查看工具 | git status | 查看 git 狀態 | |||||
git log | 查看所有commit紀錄 | ||||||
git help | git會提示指令 |