第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Git:如何一次重新設(shè)置許多分支(具有相同的基本提交)的基礎(chǔ)?

Git:如何一次重新設(shè)置許多分支(具有相同的基本提交)的基礎(chǔ)?

Git
慕娘9325324 2019-11-14 08:52:24
我的項(xiàng)目中有一個(gè)master分支,可用來(lái)從其他人那里獲取更改。由此,我通常會(huì)在幾個(gè)主題分支上工作。我的問(wèn)題是:我是否有辦法將新更改引入我的主服務(wù)器,然后立即將所有主題分支重新建立基礎(chǔ)?這種情況:        D--E topic1       /A--B--C  master       \        F--G topic2我想用一個(gè)命令(H來(lái)自上游)完成此任務(wù):               D'-E'主題1              /    A–B–C–H主              \               F'-G'主題2現(xiàn)在,我知道可以通過(guò)將topic1和topic2重新設(shè)置到master上來(lái)完成此操作,甚至可以編寫(xiě)腳本來(lái)實(shí)現(xiàn)此目的。但是,如果我還有其他幾個(gè)分支,創(chuàng)建新分支并頻繁刪除其他分支,而我一直都收到上游更改怎么辦?手動(dòng)執(zhí)行此操作(多次重新設(shè)置基準(zhǔn))既累人又容易出錯(cuò)。有更容易的方法嗎?謝謝!
查看完整描述

3 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

我已經(jīng)將其轉(zhuǎn)換為健壯的腳本,并保存在我的git-extensions存儲(chǔ)庫(kù)中:


$ git-urebaselocalbr --help

Rebase all / the last committed N local branches (except for the current branch

and master) to the updated upstream head.

Usage: git-urebaselocalbr [--continue|--skip|--abort] [--branches "<branch1> ..."] [N] [-i|--interactive] [options]


查看完整回答
反對(duì) 回復(fù) 2019-11-14
?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

我相當(dāng)確定沒(méi)有辦法自動(dòng)執(zhí)行此操作。請(qǐng)記住,“ git rebase master”還可以將您帶回到需要您解決合并沖突的外殼程序中,因此,如果您要編寫(xiě)腳本來(lái)自動(dòng)化所有這些操作,則需要考慮到這一點(diǎn)。


但是,您可以相當(dāng)輕松地跟蹤哪些分支需要更新。嗯,對(duì)于任何分支,如果分支不是最新的wrt(即僅在master之上提交),“ git rev-list branch..master”將產(chǎn)生輸出。因此,您需要遍歷除master以外的所有本地頭來(lái)生成報(bào)告(nb“ git show-branch”將大致執(zhí)行此操作):


git for-each-ref 'refs/heads/*' | \

  while read rev type ref; do

    branch=$(expr "$ref" : 'refs/heads/\(.*\)' )

    revs=$(git rev-list $rev..master)

    if [ -n "$revs" ]; then

      echo $branch needs update

      git diff --summary --shortstat -M -C -C $rev master

    fi

  done

因此,如果您感覺(jué)很勇敢,則可以用“ git checkout $ branch && git rebase master”之類(lèi)的東西替換“ git diff”(如果已設(shè)置,則可能只是“ git pull --rebase”)。我認(rèn)為您隨后必須檢查是否存在“ .git / rebase-apply”目錄或檢查未合并文件的索引(“ git ls-files -u”),以測(cè)試是否已經(jīng)等待進(jìn)行合并。


當(dāng)然,如果沒(méi)有沖突,那很容易...它會(huì)產(chǎn)生一些在不容易的情況下也能起作用的東西:p


這并不一定解決如果您的分支之一基于其他事物時(shí)會(huì)發(fā)生的情況……這就是為什么我提到使用“ git pull --rebase”代替,因?yàn)檫@會(huì)根據(jù)分支配置進(jìn)行基礎(chǔ)化,而不是盲目地掌握。盡管檢測(cè)不是基于分支配置的,但是...可能最簡(jiǎn)單的方法是檢出每個(gè)分支并執(zhí)行“ git pull”并讓分支配置處理所有事情,包括是否重新設(shè)置基礎(chǔ)或合并?


查看完整回答
反對(duì) 回復(fù) 2019-11-14
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

您總是可以像這樣編寫(xiě)一線shell:


for branch in topic1 topic2 topic3;do git rebase master $branch;done

由于您希望重新定位的主題分支可能會(huì)隨時(shí)間而變化,因此這是一種快捷的^ H ^ H ^ Hflexible解決方案:-)


查看完整回答
反對(duì) 回復(fù) 2019-11-14
  • 3 回答
  • 0 關(guān)注
  • 721 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)