最近試玩一下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的資訊,在做master
做git pull add_remote_name
正常會遇到衝突
就直接解這個問題(git merge –continue)
git push上去後,PR那個merge按鈕應該就可以按了
但這個有嚴重的缺點,會自動產生merge commit
其實這也不是缺點,保留當下時間的commit也只有這個方法
所以為了好看,大部分應該都會選擇rebase
使用 git rebase 避免無謂的 merge | ihower { blogging }
- rebase
先加入fork remote的資訊,在做master
做git pull --rebase add_remote_name
正常會遇到衝突
就直接解這個問題(git rebase –continue)
正常你的repo應該只有你一個人
之前的commit會改變
可能需要git push -f
但有多人的話git push --force-with-lease
與多人衝突要怎麼辦??
這時候可能只能用merge
方法,但如先前所說會有缺點
Git 更安全的强制推送,–force-with-lease - walterlv
相關資料:
- Github 發 Pull Request & 貢獻流程速查
- Git 更安全的强制推送,–force-with-lease - walterlv
- 自己提交的 pull request 一直是 open,这个意思说一直在审核期吗?是不是说进入 close 了 就是审核通过了? - V2EX
(https://bitmingw.com/2017/02/16/git-merge-rebase-ours-and-theirs/) - Git: 更新分支+解衝突 | Summer。桑莫。夏天
- Git: 比較 Merge Squash 與 Rebase Squash | Summer。桑莫。夏天
- git pull –rebase vs git rebase : what’s the danger? - Stack Overflow
git pull –rebase
這個東西非常玄
印象中感覺Github Desktop
會做git pull --rebase
所以好像很少會產生merge branch commit
git pull --rebase = git fetch + git rebase
發現git rebase , git merge 合併預設remote可以省略
詳細裡面內容
- Git: 更新分支+解衝突 | Summer。桑莫。夏天
- Git: 比較 Merge Squash 與 Rebase Squash | Summer。桑莫。夏天備份圖
還有Squash,感覺可以應用比較特別情境上面
先留著筆記
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
- 沈弘哲 - YouTube
- git pull vs git pull –rebase - YouTube
- git rebase interactive - reword - PART 1 - YouTube
- git rebase interactive - edit - PART 2 - YouTube
- git rebase interactive - squash fixup - PART 3 - YouTube
- (20) git rebase interactive - exec drop - PART 4 - YouTube
題外話,剛剛我筆電(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