開發流程
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