git 開發應用 : branch / rebase

收錄在 AIoT Ameba 2020 - Just for Fun

https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1?fbclid=IwAR1eKNLJX2XRH6QHaqcgGgGJ5uUt6UTN8j3AmkVZbYZkfYrHRiYDsCy6Cr0


==
來建立一個 kernel-5.4 的 branch


以 rtw88-usb 為例.
https://github.com/neojou/rtw88-usb
一開始我們先 git clone 下載下來
git clone https://github.com/neojou/rtw88-usb.git

$ git branch -a
        可以看看目前有哪些 branch

$ git checkout -b <origin/...>
  -b : 當沒有 branch 時, 可以 checkout

$ git branch
   看當下的 branch


我們建立一個 branch: kernel-5.4
    $ git checkout -b kernel-5.4

接下來 git commit 一個 patch 解決 issue:
https://github.com/neojou/rtw88-usb/issues/30

    $ git push --set-upstream origin kernel-5.4

這樣 github 上就可以看到一個 Branch: kernel-5.4
    https://github.com/neojou/rtw88-usb/tree/kernel-5.4


=

以 rtw88-usb 為例.
https://github.com/neojou/rtw88-usb
一開始我們先 git clone 下載下來
git clone https://github.com/neojou/rtw88-usb.git
進入 rtw88-usb 目錄後, git branch 可以看到一個
* master
 但我們看 remote 端, git branch -r , 列出所有 repository branches,
 可以看到:
origin/8852a
origin/HEAD -> origin/master
origin/master
在 github 上, 也可以看到有兩個 Branch : master / 8852a


我們可以用
git checkout -b 8852a origin/8852a

這時候再看 git branch, 可以看到
* 8852a
master

打 git log 也可以看到是 8852a 這個 branch 的相關 patches.
要切回來主線, 可以用 git checkout master

====

github 設計蠻適合軟體開發的,
例如我們有個 function 是開發時才會用到, delivery 時不需要.
一開始進 code 沒考慮, compile 時會多 warning.
我們可以在 github 先建立一個 issue

https://github.com/neojou/rtw88-usb/issues/27

來開一個 dev 分支保留這 function
git branch dev
修改程式後,
$ git add .
$ git commit -s
$ git push
https://github.com/neojou/rtw88-usb/commit/f509eec952b7f00ce13a95f2283ec6ed1b0a1680
在 commit title 可以加上 fix #<issue number>,
這樣 push 後 github 上的 issue 狀態會變成 closed


不過這時候 branch dev 還沒有 push 上 github.
可以用:
git push -u origin dev
這邊 -u 也就是 --set-upstream 的意思

===

我們在 dev branch 開發後, 有些 patch 可以合回 master
例如:
    usb.c 註解錯誤, 寫成 8821CU
    https://github.com/neojou/rtw88-usb/issues/28

我們在 dev branch 寫好, 用上述方式 push 後,
github 可看到:


但因為不是在 master, 還並不會把 issue close.
接下來我們切回主線
git checkout master

git rebase -i dev
來把 dev 的 patch 合併進來.
這時候就會看到 #28 issue 狀態變成 closed



留言

熱門文章