程式狂想筆記

一個攻城師奮鬥史

0%

gitea試玩合併分支(PR)

最近試玩一下gitea
使用choco install gitea
順利安裝成功
預設第一個申請帳號會是管理者

直接進入主題

之前有在想PR後,分支會變成什麼狀況??
今天實驗用一般PR
合併PR會有兩條branch


gitea 合併分支有兩個選項

PR還有兩種branch(rebase,squash)

稍微google一下
使用 git rebase 提高 PR 质量 - 掘金
備份圖

不過我覺得PR在不傷commit情況下,一般合併應該就可以了

由於最近在想公司

revert無法取笑merge branch

最近還發現revert不能取消merge branch
雖然我會用git reset
但還是有找了一下
Git怎样撤销一次分支的合并Merge - SegmentFault 思否
git/revert-a-faulty-merge.txt at master · git/git
git revert 讓提交不再害怕 - IT閱讀

有機會情境用到來測試看看…

PR衝突解決方法

也有爬到PR可能會衝突解決辦法
不過還沒有實驗,先記錄

經過實驗得到很驚奇的結果
PR假如會發生衝突,gitea或gitlab不會讓你做合併動作(按鈕會變灰色的)
但要如何修正呢

當然就一般兩種

  • merge
    先加入fork remote的資訊,在做mastergit pull add_remote_name
    正常會遇到衝突
    就直接解這個問題(git merge –continue)
    git push上去後,PR那個merge按鈕應該就可以按了

但這個有嚴重的缺點,會自動產生merge commit
其實這也不是缺點,保留當下時間的commit也只有這個方法

所以為了好看,大部分應該都會選擇rebase
使用 git rebase 避免無謂的 merge | ihower { blogging }

  • rebase
    先加入fork remote的資訊,在做mastergit pull --rebase add_remote_name
    正常會遇到衝突
    就直接解這個問題(git rebase –continue)
    正常你的repo應該只有你一個人
    之前的commit會改變
    可能需要git push -f
    但有多人的話git push --force-with-lease
    與多人衝突要怎麼辦??
    這時候可能只能用merge方法,但如先前所說會有缺點
    Git 更安全的强制推送,–force-with-lease - walterlv

相關資料:

git pull –rebase

這個東西非常玄
印象中感覺Github Desktop會做git pull --rebase
所以好像很少會產生merge branch commit

git pull --rebase = git fetch + git rebase

發現git rebase , git merge 合併預設remote可以省略
詳細裡面內容

PR 其實local端也可以做到

參考gitlab說明

不過有好PR功能不用嗎o.<

怎麼快速了解git ours和theirs

查看裡面說明,講得很清楚
化解冲突:git merge 与 git rebase 中的 ours 和 theirs | Ming’s Blog

可以看出,<<<<<<< 和 >>>>>>> 清晰地标示出了冲突的部分。你需要将它们改成期望的样子。如果你想保留两个版本中的一个而不引入新的修订,就可以使用两个预先定义的代词。<<<<<<< 和 ======= 之间的部分称为 ours, ======= 和 >>>>>>> 之间则称为 theirs. 此时,你只需要键入合适的指令即可化解冲突,而不需要进入文本编辑器。在当前项目可以得到如下运行结果

不過…,rebase是相反的
我這邊猜rebase因為是把另外分支為基準
所以自己的code可能算在theirs(自己猜測)

git rebase小記

從開始commit開始做
舊的commit會從上面依序往下排
git rebase -i --root

題外話,剛剛我筆電(elementaryos, git 2.7.x)做git log確沒有顯示HEAD跟remote資訊
查了一下,需要加--decorate
疑似之後2.13的git預設是--decorate
git log - How to make git log decorate by default - Stack Overflow