開發流程
Git Tree
- gitk& 路徑切換到項目裡打開 Git tree
 - git gui& 路徑切換到項目裡打開 Git gui 做 commit action
 - git describe --tags
 - git -d (tag version) 删除指定版本号 ex: 在命令行输入 for i in {203..217}; do git tag -d v1.6.20$i; done
 
Git Gui
- Rescan 掃描變動的檔案
 - Stage Changed 在 Unstaged Changes 選擇欲提交的文件,顯示在 Staged Changes
 - Commit Message - fix xxx
 - Commit 提交
 
Git Merge Conflict
- git mergetool -t opendiff
 - command D
 - command S
 - Control C
 - git rebase --continue
 - git tag 打印版本號
 - git push apollo --tags
 
Git Reset
- git reset —hard v1.6.xxxx
 - git reset —hard xxxxxxxxxxxxx (SHA1 ID)
 - git reset --soft HEAD~2 (回退兩個commit)
 - git reset HEAD^ (回退一個commit)
 
Git 小技巧
- git reflog 查看git操作紀錄
 - git stash 將目前工作先存進暫存區,拉取代碼更新完後再stash pop,若有衝突手動合併衝突
 - git checkout stella-v1.6 切换分支
 - git describe —tags 查看當前所在位置
 - git fetch apollo —tags -f 强制更新為遠端版本
 - for i in {24724..24785}; do git tag -d v1.6.$i; done 在命令行輸入指令循環刪除連續tag
 - git push origin :<分支名稱> (刪除遠端分支)
 - git push origin <分支名稱> (提交遠端分支)
 - git reset HEAD^ (回退local一個commit)
 - git reset HEAD~n (回退local n個commit)
 
Git conflict
推送分支 merge request 衝突(本地端解決衝突)
- git checkout master (local)
 - git pull --rebase upstream master (local)
 - git checkout BDM-3419
 - git rebase master
 - fix conflict
 - git add xxx (修正的文件)
 - git commit -a -m 'BDM-3419: xxx'
 - git rebase --continue
 - git push origin BDM-3419 (local 端更新 master rebase 到 master 最新代碼,解決 rebase conflict,推分支到自己的 repo)
 - 若 git push origin BDM-3419 被 rejected(remote head behind local branch)
 - git push origin :BDM-3419(刪除遠端分支) git push origin BDM-3419(提交本地分支)
 
Git 提交本地代碼
- 創建專案 create-react-app project-name
 - git init
 - git remote add origin https://github.com/username/repo-name.git
 - git add .
 - git commit -m 'init'
 - git push origin master
 
Gitlab MR Pipeline pending
- 關閉 BDM-xxxx
 - 本地重新 push create merge request
 
Gitlab porject access authority setting
- Project information > Members > invite group (select a group to invite) > invite
 
Githlab cherry-pick
- 查看 git branch -r (若遠端分支資訊不完整,在命令行執行 git fetch upstream,同步本地端為遠端代碼)
 - 選擇欲修改分支 git checkout upstream/v3.03.2005 or git checkout -b DMS-250-cherry-pick upstream/v3.03.2005
 - 在此分支開新分支 git checkout -b DMS-250-cherry-pick
 - 修改代碼
 - git add .
 - git commit -a -m 'DMS-250-cherry-pick: fx bug ...'
 - git push origin DMS-250-cherry-pick
 - 在 Gitlab 上選擇 merge into 分支 v3.03.2005
 - 若是在 v3.03.2005 版號分支上修改,就不用 cherry-pick
 
專案開發流程
Fork專案
- 進到 Gitlab project 頁面 https://gitlab.com/Heartbeat-Technology/githubflow-demo
 - 點擊 fork,fork 專案到自己的 gitlab 空間
 - 回到自己的 gitlab 空間,點擊 clone 複製 Clone with HTTPS
 - 接著在本地欲開發的目錄底下,開啟 terminal 執行命令,git clone <上一步複製的 URL>
 - 完成 clone 進入專案目錄,在 terminal 執行命令,git remote add upstream <Server專案url>
 - 查看遠端庫資訊是否正確成功更新,cat .git/config(專案目錄底下)或 git remote -v
 
[remote "origin"]
    url = https://gitlab.com/group-namespace/repo-name.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "upstream"]
    url = https://gitlab.com/group-namespace/repo-name.git
    fetch = +refs/heads/*:refs/remotes/upstream/*
代碼提交
- git add . or git add [file_name][file_name]
 - git commit -a -m 'DMS-1000: message'
 - git push origin DMS-1000
 - 在 gitlab,create merge request
 - 選取 reviewer
 
更新本地端代碼
- git checkout master
 - git pull --rebase upstream master
 - git push origin master
 
完整開發流程
- 確認 Task-number,例如 DMS-1000
 - git checkout master(切換至 master 分支)
 - git pull --rebase upstream master(拉取遠端 upstream 的 master 分支代碼,將本地 master 進度更新至 upstream/master)
 - git checkout -b DMS-1000(開啟並切換至 DMS-1000 分支)
 - git add .
 - git commit -a -m 'DMS-1000: message'
 - git push origin DMS-1000(將 DMS-1000 分支推送至origin)
 - 在網頁 gitlab,create merge request(發 MR 到原專案)
 - 選取 reviewer