3. Git 與 GitHub 管理 - ZoeHYH/mentor-program-4th GitHub Wiki
Git 與 GitHub
Git 是一個版本管理系統,應對同時存在1-4、5-7、8-9......等各種版本的情境。
GitHub 則是一個雲端服務,讓工程師們可以遠端管理程式。
檔案狀態
- Untracked 未追蹤
- Modified 已修改 in Working Directory
- Staged 暫存 in Staging Area
- Committed 已儲存 in Repository
基本操作指令
初始化
git init #在這個位址建立 .git 資料夾
git add 檔案/. # Untracked/Modified 的該/全部檔案變 Staged
git commit # Staged 需 vim 添加'敘述',全部 Committed
git commit -m"版本敘述" #不用開 vim
git commit -am"版本敘述" # Modified 檔案全部 Committed ,不含 Untracked
查看移動
git status #查看檔案的狀態階段
git log #版本、 Branch 歷史紀錄
git log --oneline #簡短資訊
git checkout 六碼版本代碼/ Branch #進入該版本、 Branch
git diff #比較 Modified 檔案與上一版本差異
git diff 檔案 #比較 Modified 的本檔案與上一版本差異
git diff 版本代號 #比較 Modified 檔案與該版本差異
git diff 版本代號 版本代號 #比較兩版本差異
git show #詳列修改內容
git help 指令 #查詢說明
git 指令 --help
不控制
加到忽略名單
touch .gitignore #建立名單
vim .gitignore #編輯名單加入檔案名稱
徹底刪除該檔案的版本
git rm --cached 檔案/. #該/全部檔案變 Untracked
版本移出 Staged
git reset HEAD 檔案 # Staged 變 Modified
個人化
git config --global alias.縮寫 原指令 #常用指令縮寫
Branch
團隊平行開發時使用,可從不同版本拉出分支開發,最後再合併 Merge 。
搭配 git checkout 跳轉
基本操作
git branch 分支名稱
git branch -d 分支 #刪除
查看
git branch -v #詳列分支清單
git branch -a #列分支清單
融合
git merge 另一分支 #當前分支被另一分支融入
衝突
#衝突內容會被標示
git status #查詢衝突檔案
vim 檔案 #手動修改
git commit -am "版本敘述" #儲存
Git Workflow
一套命名與融合分支的流程。
- master :主程式,被合併,不開發
- hotfix :主緊急修復,來自 master ( develop 可能開發中),併到 master 和 develop
- release : 主測試,來自 develop,併到 master 與 develop
- develop :主開發,來自 master ,併到 release
- feature :主額外功能,來自也併回 develop
連結 GitHub 帳戶
HTTPS
git config --global user.name "帳戶名稱"
git config --global user.email "email"
SSH:RSA 加密演算法
#先查詢無 ~/.ssh
ssh-keygen -t rsa #出現已有金鑰的訊息就NO
# GitHub 帳戶→設定→ SSH and GPG keys →貼上 id_rsa.pub
ssh -T [email protected] #測試,初次連線需要確認
連結專案
新建專案後新建內容再上傳
#創建同名資料夾
echo "# test" >> README.md
git init
git add README.md
git commit -m "敘述"
git remote add origin 專案URL
git push -u origin master
本地專案上傳至新建專案
git remote add origin 專案URL
git push -u origin master
已有內容專案下載至本地
git clone URL #自動連結
更新
git push --set-upstream origin
git -u origin #第一次上傳 Branch
git push #上傳更新的 Branch
git pull #下載更新的 Branch