Skip to main content

開發流程

Git Tree

  1. gitk& 路徑切換到項目裡打開 Git tree
  2. git gui& 路徑切換到項目裡打開 Git gui 做 commit action
  3. git describe --tags
  4. git -d (tag version) 删除指定版本号 ex: 在命令行输入 for i in {203..217}; do git tag -d v1.6.20$i; done

Git Gui

  1. Rescan 掃描變動的檔案
  2. Stage Changed 在 Unstaged Changes 選擇欲提交的文件,顯示在 Staged Changes
  3. Commit Message - fix xxx
  4. Commit 提交

Git Merge Conflict

  1. git mergetool -t opendiff
  2. command D
  3. command S
  4. Control C
  5. git rebase --continue
  6. git tag 打印版本號
  7. git push apollo --tags

Git Reset

  1. git reset —hard v1.6.xxxx
  2. git reset —hard xxxxxxxxxxxxx (SHA1 ID)
  3. git reset --soft HEAD~2 (回退兩個commit)
  4. git reset HEAD^ (回退一個commit)

Git 小技巧

  1. git reflog 查看git操作紀錄
  2. git stash 將目前工作先存進暫存區,拉取代碼更新完後再stash pop,若有衝突手動合併衝突
  3. git checkout stella-v1.6 切换分支
  4. git describe —tags 查看當前所在位置
  5. git fetch apollo —tags -f 强制更新為遠端版本
  6. for i in {24724..24785}; do git tag -d v1.6.$i; done 在命令行輸入指令循環刪除連續tag
  7. git push origin :<分支名稱> (刪除遠端分支)
  8. git push origin <分支名稱> (提交遠端分支)
  9. git reset HEAD^ (回退local一個commit)
  10. git reset HEAD~n (回退local n個commit)

Git conflict

推送分支 merge request 衝突(本地端解決衝突)

  1. git checkout master (local)
  2. git pull --rebase upstream master (local)
  3. git checkout BDM-3419
  4. git rebase master
  5. fix conflict
  6. git add xxx (修正的文件)
  7. git commit -a -m 'BDM-3419: xxx'
  8. git rebase --continue
  9. git push origin BDM-3419 (local 端更新 master rebase 到 master 最新代碼,解決 rebase conflict,推分支到自己的 repo)
  10. 若 git push origin BDM-3419 被 rejected(remote head behind local branch)
  11. git push origin :BDM-3419(刪除遠端分支) git push origin BDM-3419(提交本地分支)

Git 提交本地代碼

  1. 創建專案 create-react-app project-name
  2. git init
  3. git remote add origin https://github.com/username/repo-name.git
  4. git add .
  5. git commit -m 'init'
  6. git push origin master

Gitlab MR Pipeline pending

  1. 關閉 BDM-xxxx
  2. 本地重新 push create merge request

Gitlab porject access authority setting

  1. Project information > Members > invite group (select a group to invite) > invite

Githlab cherry-pick

  1. 查看 git branch -r (若遠端分支資訊不完整,在命令行執行 git fetch upstream,同步本地端為遠端代碼)
  2. 選擇欲修改分支 git checkout upstream/v3.03.2005 or git checkout -b DMS-250-cherry-pick upstream/v3.03.2005
  3. 在此分支開新分支 git checkout -b DMS-250-cherry-pick
  4. 修改代碼
  5. git add .
  6. git commit -a -m 'DMS-250-cherry-pick: fx bug ...'
  7. git push origin DMS-250-cherry-pick
  8. 在 Gitlab 上選擇 merge into 分支 v3.03.2005
  9. 若是在 v3.03.2005 版號分支上修改,就不用 cherry-pick

專案開發流程

Fork專案

  1. 進到 Gitlab project 頁面 https://gitlab.com/Heartbeat-Technology/githubflow-demo
  2. 點擊 fork,fork 專案到自己的 gitlab 空間
  3. 回到自己的 gitlab 空間,點擊 clone 複製 Clone with HTTPS
  4. 接著在本地欲開發的目錄底下,開啟 terminal 執行命令,git clone <上一步複製的 URL>
  5. 完成 clone 進入專案目錄,在 terminal 執行命令,git remote add upstream <Server專案url>
  6. 查看遠端庫資訊是否正確成功更新,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/*

代碼提交

  1. git add . or git add [file_name][file_name]
  2. git commit -a -m 'DMS-1000: message'
  3. git push origin DMS-1000
  4. 在 gitlab,create merge request
  5. 選取 reviewer

更新本地端代碼

  1. git checkout master
  2. git pull --rebase upstream master
  3. git push origin master

完整開發流程

  1. 確認 Task-number,例如 DMS-1000
  2. git checkout master(切換至 master 分支)
  3. git pull --rebase upstream master(拉取遠端 upstream 的 master 分支代碼,將本地 master 進度更新至 upstream/master)
  4. git checkout -b DMS-1000(開啟並切換至 DMS-1000 分支)
  5. git add .
  6. git commit -a -m 'DMS-1000: message'
  7. git push origin DMS-1000(將 DMS-1000 分支推送至origin)
  8. 在網頁 gitlab,create merge request(發 MR 到原專案)
  9. 選取 reviewer