[請益] 請問這樣的git使用方式是否是正確的?

作者: pttdocc (Hi)   2022-10-21 07:38:50
請問一下,本人是程式新手,最近加入了一個組織,裡面的開發團隊的git使用方法,讓
我覺得有點怪怪的,但是我也覺得這也可能是正確的git使用方式,只是我以前不知道而
已,所以想請問一下,以下的git使用方式,是否很常見? 是否是合理的?
假如某個repo裡有3個folder - serviceA, serviceB, serviceC,這3個folder在開發階
段不會有dependency,這個開發團隊的作法是,從master branch一開始的init commit
裡,分出3個branch A, B, C,再從這3個branch分別建立出上面的3個folder,當要修改
任何一個service時, 就從對應的branch create出新的branch,改好後再merge回
serviceX的branch, 再merge回master branch。
這樣的作法總是讓我覺得怪怪的,至少如果有人不知情而直接從master branch分出
NEW branch去修改serviceA,那就無法再直接從NEW branch 或master branch merge
回branch A,因為NEW branch 和master branch 都包含了folder serviceA, serviceB,
serviceC, 而branch A, B, C照開發團隊的作法,是要維持各自只有對應的serviceX
folder的。
所以想請問這是否是種常見的git使用方式? 是否合理? 謝謝。
作者: gasbomb (虛空雷神獸)   2022-10-21 07:40:00
git就跟打麻將一樣 一開始大家規則講好就好了
作者: BlueBird5566 (生日56)   2022-10-21 07:43:00
git就跟一夜情一樣 一開始大家規則講好就好了
作者: pttdocc (Hi)   2022-10-21 07:44:00
但我覺得如果是有缺陷的規則,就算講好了一樣會有缺陷
作者: mercurycgt68 (發芽的吉它手)   2022-10-21 07:46:00
你不是老鳥就只能吞了 不要跟薪水烤雞過不去
作者: BlueBird5566 (生日56)   2022-10-21 07:48:00
直接問資深同事為什麼這樣弄不是比較快?很多東西都有歷史包袱的 公司外的人也不會知道
作者: eeyellow (TWC英勇長存人心)   2022-10-21 07:55:00
你們需要的是branch policy跟PR review
作者: hduek153 (專業打醬油)   2022-10-21 08:04:00
git有n個團隊有n種用法 真的 不要懷疑
作者: viper9709 (阿達)   2022-10-21 08:25:00
二樓XD
作者: libitum (libitum)   2022-10-21 08:25:00
有時外行真的很難了解這樣發展的原因 所以沒有什麼是絕對合理
作者: pttdocc (Hi)   2022-10-21 08:27:00
我想我上面說的應該就是一種branch policy了, 這樣作的另一個不算大的問題是 從A, B, C間切換會花更多時間
作者: t64141 (榕樹)   2022-10-21 08:30:00
你可以先問為什麼這樣做,是為了避免什麼問題得到什麼好處,再回來看這樣做是否有效,或有沒有其他更簡單的策略可以達到相同效果好奇這樣做的話如果 service 之間產生依賴的話分支怎麼切
作者: dog30111 (安)   2022-10-21 08:32:00
沒有正確只有適不適合 有覺得更適合的作法就跟團隊討論吧...
作者: pttdocc (Hi)   2022-10-21 08:33:00
如上述, service之間在開發階段沒有dependency, 如果有的話,例如IDE要同時開2個folder下的Project的話,就很明顯不能這樣
作者: ql4au04 (泡麵)   2022-10-21 08:47:00
如果遵守這個規則 就不會有一開始就從master branch切出去做A service吧直覺想就是要把每個team切很開 不要有任何相依性 可能是擔心改code還要跨team sync很麻煩因為要碰你們codebase的人 本身就要和對應的人sync完吧?還是你們會有個情況是完全不知道你們開發流程的人跑來上code? 但那樣code review應該不會過吧
作者: pttdocc (Hi)   2022-10-21 09:03:00
會有的,code也merge進去了,不便多說
作者: ql4au04 (泡麵)   2022-10-21 09:13:00
神奇XDD 那後續是用spare checkout去sync嗎? 還是就只能擺著XD* sparse
作者: gocreating (小平)   2022-10-21 09:27:00
推測這麼做可以讓ci cd pipeline比較好管理
作者: pttdocc (Hi)   2022-10-21 09:45:00
後續應該是原branch還沒其它更動時就直接git check 特定folder整個蓋回去吧 或狀況還不亂時cherry-pick應該也可以 git sparse印象中是git 古早是不可能只merge部份
作者: abccbaandy (敏)   2022-10-21 09:48:00
你直接問同事不就知道了...
作者: pttdocc (Hi)   2022-10-21 09:48:00
file的 但這個command出來後好像可以(不熟悉它所以不確定其實有大約問了幾個人,得到的答案也是不確定的說法,也不便多說,以上
作者: j9d9 (Vicinaty)   2022-10-21 15:45:00
rebase
作者: MarcoReus (Marco Reus)   2022-10-21 15:56:00
感覺比較適合拆成三個repo再用submodule合成一個
作者: wulouise (在線上!=在電腦前)   2022-10-21 16:17:00
還好吧,你說切換不方便的問題怎麼不用git worktree
作者: Lhmstu (lhmstu)   2022-10-21 16:17:00
沒有對錯,有可能是歷史或是管理原因才這樣做,git 事先講好怎麼用就好。不過你們公司這樣用,八成是希望未來A,B,C能夠成為單獨的產品線賺錢
作者: vi000246 (Vi)   2022-10-21 17:02:00
可能是一開始init的人懶
作者: longlongint (華哥爾)   2022-10-21 17:35:00
每個修改都切branch 不是很棒嗎你沒看過commits 一整坨夾板夾到眼神死的團隊老闆還說自動測試跟版控會拖慢進度 沒有必要(?你們團隊的問題在 沒有開ABC三個repo
作者: lovdkkkk (dk)   2022-10-21 17:47:00
有外部的人共同開發嗎?有的話可能是要省人頭費記得是不同專案分開收費的 一個人加兩個專案就要收兩筆
作者: leolarrel (真.粽子無雙)   2022-10-21 19:22:00
這對樓主是一個很好的學習機會.樓主可以查 "git flow"
作者: BlacksPig (Black Handsome s Pig)   2022-10-21 19:37:00
在問Google跟Meta在用的Monorepo?
作者: gasbomb (虛空雷神獸)   2022-10-20 23:40:00
git就跟打麻將一樣 一開始大家規則講好就好了
作者: BlueBird5566 (生日56)   2022-10-20 23:43:00
git就跟一夜情一樣 一開始大家規則講好就好了
作者: pttdocc (Hi)   2022-10-20 23:44:00
但我覺得如果是有缺陷的規則,就算講好了一樣會有缺陷
作者: mercurycgt68 (發芽的吉它手)   2022-10-20 23:46:00
你不是老鳥就只能吞了 不要跟薪水烤雞過不去
作者: BlueBird5566 (生日56)   2022-10-20 23:48:00
直接問資深同事為什麼這樣弄不是比較快?很多東西都有歷史包袱的 公司外的人也不會知道
作者: eeyellow (TWC英勇長存人心)   2022-10-20 23:55:00
你們需要的是branch policy跟PR review
作者: hduek153 (專業打醬油)   2022-10-21 00:04:00
git有n個團隊有n種用法 真的 不要懷疑
作者: viper9709 (阿達)   2022-10-21 00:25:00
二樓XD
作者: libitum (libitum)   2022-10-21 00:25:00
有時外行真的很難了解這樣發展的原因 所以沒有什麼是絕對合理
作者: pttdocc (Hi)   2022-10-21 00:27:00
我想我上面說的應該就是一種branch policy了, 這樣作的另一個不算大的問題是 從A, B, C間切換會花更多時間
作者: t64141 (榕樹)   2022-10-21 00:30:00
你可以先問為什麼這樣做,是為了避免什麼問題得到什麼好處,再回來看這樣做是否有效,或有沒有其他更簡單的策略可以達到相同效果好奇這樣做的話如果 service 之間產生依賴的話分支怎麼切
作者: dog30111 (安)   2022-10-21 00:32:00
沒有正確只有適不適合 有覺得更適合的作法就跟團隊討論吧...
作者: pttdocc (Hi)   2022-10-21 00:33:00
如上述, service之間在開發階段沒有dependency, 如果有的話,例如IDE要同時開2個folder下的Project的話,就很明顯不能這樣
作者: ql4au04 (泡麵)   2022-10-21 00:47:00
如果遵守這個規則 就不會有一開始就從master branch切出去做A service吧直覺想就是要把每個team切很開 不要有任何相依性 可能是擔心改code還要跨team sync很麻煩因為要碰你們codebase的人 本身就要和對應的人sync完吧?還是你們會有個情況是完全不知道你們開發流程的人跑來上code? 但那樣code review應該不會過吧
作者: pttdocc (Hi)   2022-10-21 01:03:00
會有的,code也merge進去了,不便多說
作者: ql4au04 (泡麵)   2022-10-21 01:13:00
神奇XDD 那後續是用spare checkout去sync嗎? 還是就只能擺著XD* sparse
作者: gocreating (小平)   2022-10-21 01:27:00
推測這麼做可以讓ci cd pipeline比較好管理
作者: pttdocc (Hi)   2022-10-21 01:45:00
後續應該是原branch還沒其它更動時就直接git check 特定folder整個蓋回去吧 或狀況還不亂時cherry-pick應該也可以 git sparse印象中是git 古早是不可能只merge部份
作者: abccbaandy (敏)   2022-10-21 01:48:00
你直接問同事不就知道了...
作者: pttdocc (Hi)   2022-10-21 01:48:00
file的 但這個command出來後好像可以(不熟悉它所以不確定其實有大約問了幾個人,得到的答案也是不確定的說法,也不便多說,以上
作者: j9d9 (Vicinaty)   2022-10-21 07:45:00
rebase
作者: MarcoReus (Marco Reus)   2022-10-21 07:56:00
感覺比較適合拆成三個repo再用submodule合成一個
作者: wulouise (在線上!=在電腦前)   2022-10-21 08:17:00
還好吧,你說切換不方便的問題怎麼不用git worktree
作者: Lhmstu (lhmstu)   2022-10-21 08:17:00
沒有對錯,有可能是歷史或是管理原因才這樣做,git 事先講好怎麼用就好。不過你們公司這樣用,八成是希望未來A,B,C能夠成為單獨的產品線賺錢
作者: vi000246 (Vi)   2022-10-21 09:02:00
可能是一開始init的人懶
作者: longlongint (華哥爾)   2022-10-21 09:35:00
每個修改都切branch 不是很棒嗎你沒看過commits 一整坨夾板夾到眼神死的團隊老闆還說自動測試跟版控會拖慢進度 沒有必要(?你們團隊的問題在 沒有開ABC三個repo
作者: lovdkkkk (dk)   2022-10-21 09:47:00
有外部的人共同開發嗎?有的話可能是要省人頭費記得是不同專案分開收費的 一個人加兩個專案就要收兩筆
作者: leolarrel (真.粽子無雙)   2022-10-21 11:22:00
這對樓主是一個很好的學習機會.樓主可以查 "git flow"
作者: BlacksPig (Black Handsome s Pig)   2022-10-21 11:37:00
在問Google跟Meta在用的Monorepo?
作者: monkai (monkai)   2022-10-21 12:49:00
省repo 的錢吧
作者: abc0922001 (中士abc)   2022-10-21 13:45:00
你應該拿著一瓶上好的酒與酒杯,坐在椅子上聽老鳥講有關於這個 repo 的歷史你自己也分三個資料夾,分別放 A、B、C 三個分支
作者: B0988698088 (廢文少女小円♥)   2022-10-21 14:07:00
去問老鳥我們無法通靈 不合理你也管不着 安靜辦事就好
作者: quickbym1 (張探長)   2022-10-21 15:03:00
幹嘛不開3個 repo 既然沒有相依性
作者: monkai (monkai)   2022-10-21 20:49:00
省repo 的錢吧
作者: abc0922001 (中士abc)   2022-10-21 21:45:00
你應該拿著一瓶上好的酒與酒杯,坐在椅子上聽老鳥講有關於這個 repo 的歷史你自己也分三個資料夾,分別放 A、B、C 三個分支
作者: B0988698088 (廢文少女小円♥)   2022-10-21 22:07:00
去問老鳥我們無法通靈 不合理你也管不着 安靜辦事就好
作者: quickbym1 (張探長)   2022-10-21 23:03:00
幹嘛不開3個 repo 既然沒有相依性
作者: DrTech (竹科管理處網軍研發人員)   2022-10-21 17:20:00
git是死的,人是活的。這種專案管理的方式與git本身技術與gir規範無關了,而是要問你們組織,為什麼專案程式碼要這樣管理。
作者: Mupzopod (pinballmachine)   2022-10-21 18:52:00
如果有大量CICD的話、分開來PR比較方便管理
作者: dong531 (貓王)   2022-10-21 19:01:00
那你說用手抓飯吃是對的還是用筷子吃飯是對的?又或是用刀叉吃飯才是對的呢?
作者: kurtsgm   2022-10-21 22:50:00
我不敢說對錯 但如果是我的話不會這樣幹
作者: jj2564 (MR.黃)   2022-10-21 23:44:00
A rebase onto master就可以了吧? 晚點我試一下哈不行,這樣就只能cherry pick了https://imgur.com/eoV7g40 這種感覺吧
作者: BigCockman (大雕男)   2022-10-22 01:43:00
看起來還好啊 問題在哪
作者: Segundus (賽岡督)   2022-10-22 10:19:00
不會說有對錯,但絕不這麼做。要麼拆成三個repo,要嘛就都在master
作者: peter98 (新兵)   2022-10-22 15:46:00
我是比較喜歡在branch上面又長出branch 當然 如果是個人自己的branch就無所謂 自己的branch想怎麼完就怎麼玩但你的例子branch A/B/C似乎是有多人在用 不建議在長出branch 一段時間後會亂到無法無天另外 如果是不同的service 這樣最好code repo各自獨立第一個推文是不喜歡 打錯了
作者: roccqqck (ccqq)   2022-10-22 17:25:00
追求正確是無意義的 你該說服他們的是有沒有比較「方便」有沒有什麼痛點他們可以改個git方式就處理掉
作者: lej (認真就輸了XD)   2022-10-23 13:21:00
git 就是這樣,規則講好,code review/branch policy弄好,大家跟著就行了。你在那邊不便多說,是要大家通靈喔
作者: acgotaku (otaku)   2022-10-24 10:10:00
通常devops or platform eng 是菜鳥或不太懂怎麼分切環境,就會弄一個很困惑的git flow讓 sde先擋一陣子,但用一陣子服務上線後,又沒有膽子去重寫又沒人會,就會變成這樣而且我建議,不要在主專案下亂開branch,在 fork 出來的repo開feature branch,都改好後再發MR,這樣你改其他服務主幹道的commit history也能看得一清二楚
作者: jovilu (....)   2022-10-27 17:18:00
如果管repo的人是不同單位,開repo要填申請單還要層層審核。人員調動要改權限,三個repo要填三張單,就不難理解為什麼一個repo當三個用
作者: expury (ao6x87)   2022-10-28 20:52:00
乾脆連辦公桌椅都自備好了 我猜原本是想搞像 FB 那樣 mono repo期待不同 team 的工程師彼此隨時可以 support switch project
作者: KJZ5223 (密斯特博克)   2022-11-02 12:59:00
monorepo?

Links booklink

Contact Us: admin [ a t ] ucptt.com