Git 分支管理策略【重要】

雙十節(jié)前夕將不同分支間 merge,本地遠(yuǎn)程 rebase 的適用場(chǎng)景進(jìn)行了區(qū)分,真是一件喜事,基本解決了 Git 分支管理上的一系列策略問(wèn)題;
本文就簡(jiǎn)要、集中的陳述一下 Git 分支管理策略;

原則
  • Git の 分支與整合策略;
    注意區(qū)分 合并變基;整合的兩種方式:merge(合并),rebase(變基);
    注意 git pull 命令,既可以是 git fetch + merge 組合,又可以 git fetch + rebase 組合;
    當(dāng)下,我們普遍采用的是 fetch + rebase 組合的 pull;
  • 在一個(gè)迭代分支上協(xié)作開(kāi)發(fā),采用 rebase,實(shí)際上是本地分支 rebase 遠(yuǎn)程分支;
    所產(chǎn)生的 log 整潔有序;
  • 迭代分支從 dev 分支開(kāi)出;
  • 迭代分支應(yīng)經(jīng)常 merge dev(git merge dev);
    尤其是在 dev 上 hotfix 的東西在發(fā)布后,要及時(shí)地 merge 到迭代分支上;
  • 迭代完成后,dev 合并迭代(git merge 0.8d);
  • 刪除迭代分支(git branch -d 0.8c);
迭代分支 merge dev 時(shí)出現(xiàn)沖突怎么辦?
  • 為了降低沖突概率,請(qǐng)及時(shí) merge dev;
  • merge 時(shí)出現(xiàn)沖突,解決沖突
# 確保本地庫(kù)當(dāng)前代碼是你想要的;
git checkout 1.0
git merge dev
# 出現(xiàn)沖突,解決沖突
git add .
git commit -a -m 'merge dev 到 1.0,解決沖突'
git push

如果發(fā)生了不幸:比如你在 commit 之后、push 之前 pull 了,就會(huì)出現(xiàn)麻煩;如果不明白原理,沒(méi)有及時(shí)中止 rebase,而是選擇繼續(xù)解決出現(xiàn)的新問(wèn)題,那么你就 誤入歧途 了。

  • commit 之后、push 之前 pull 出現(xiàn)新問(wèn)題的原因分析
    由于我們 pull 采用的是 fetch + rebase,fetch 操作沒(méi)有影響(因?yàn)檫h(yuǎn)程 origin 1.0 沒(méi)新 commits),rebase 操作把 merged 過(guò)來(lái)的 dev 上所做的 commits 基于 origin/1.0 又 applying 了一遍。至于為什么會(huì)這樣,還不理解。
  • commit 之后、push 之前 pull 出現(xiàn)問(wèn)題后如何解決?
    git rebase --abort 果斷中止 rebase 即可;
何時(shí)出現(xiàn) diverged 情況?
  • 新分支 0.8c 從 dev 開(kāi)出;
  • 0.8c 和 dev 各有若干 commits;
  • 0.8c:git rebase dev,產(chǎn)生 diverged(和遠(yuǎn)程分支分叉了);
  • 解決若干沖突,本地 0.8c 和 dev 指向同一個(gè) commit;
  • 再無(wú)法推送到遠(yuǎn)程 0.8c(因?yàn)?diverged);
HEAD detached 如何處理?
  • peter 晚上在家 2 次提交(C1和C2):b26接口格式化日期,使用同一函數(shù) 兩個(gè) commits;并且 push 到 remote;
  • peter 翌日公司 1次 提交(C3):添加yii2mod-commentyii2mod/yii2-comments
    提交前沒(méi)有 pull。
  • git pull 后出現(xiàn):HEAD detached from refs/heads/v0.8(即 HEAD 指向的是 C2,而本地 v0.8 指向的是 C3,雖然本來(lái)她跟蹤的是遠(yuǎn)程 v0.8)
  • 解決方法
當(dāng)下處于 * (HEAD detached from refs/heads/v0.8) 狀態(tài)(當(dāng)前 HEAD 指向 C2),
git merge v0.8(指向 C2 的 HEAD 將 C3 合并到 HEAD)
git push origin HEAD:v0.8 (將當(dāng)前本地 HEAD 推到遠(yuǎn)程 v0.8)
git pull origin v0.8
使用的 git 命令
merge 之后

When HEAD is detached, commits work like normal, except no named branch gets updated. (You can think of this as an anonymous branch.)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 持續(xù)部署的前提是模塊化設(shè)計(jì)、自動(dòng)化測(cè)試和持續(xù)集成。使用好 Git 的分支(branch)與整合(integrate...
    michael_jia閱讀 8,981評(píng)論 0 6
  • 一.創(chuàng)建與合并分支: 1.分支概念: 每次提交,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支。我們經(jīng)常用的...
    Mr_歡先生閱讀 639評(píng)論 0 11
  • 眼下最流行的”版本管理系統(tǒng)”,非Git莫屬。 相比同類軟件,Git有很多優(yōu)點(diǎn)。其中很顯著的一點(diǎn),就是版本的分支(b...
    零一間閱讀 462評(píng)論 0 2
  • 如果你嚴(yán)肅對(duì)待編程,就必定會(huì)使用"版本管理系統(tǒng)"(Version Control System)。 眼下最流行的"...
    木易林1閱讀 596評(píng)論 1 0
  • 姓名:張亞妮 公司:慈星股份 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》大綱背誦1遍 共44遍 《六項(xiàng)精進(jìn)》通篇誦讀1遍 共...
    宇嘟嘟閱讀 141評(píng)論 0 0

友情鏈接更多精彩內(nèi)容