cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah Git menarik komit tertentu cawangan tertentu?

Kini terdapat dua cawangan iaitu cawangan A dan cawangan B. Terdapat beberapa penyerahan pada setiap cawangan; b5, terdapat lima penyerahan kesemuanya;

Nota: Nilai cincangan 10 penyerahan di atas adalah berbeza.

Maafkan saya: Bagaimanakah saya boleh menarik nod komit b2, b3 dan b4 cawangan B ke cawangan A sahaja?

Memerlukan bahawa selepas menarik ke cawangan A, maklumat komit pada cawangan B asal mesti dikekalkan.

Sila patahkan gaya ( ̄▽  ̄)╭ ~

Kaedah

yang disebut oleh @junnplus adalah betul, dan saya juga boleh melakukannya tetapi adakah jawapan yang lebih baik?

大家讲道理大家讲道理2794 hari yang lalu981

membalas semua(5)saya akan balas

  • 迷茫

    迷茫2017-05-02 09:34:03

    Pada cawangan A, laksanakan

    git cherry-pick <commit_id>

    balas
    0
  • 黄舟

    黄舟2017-05-02 09:34:03

    Jika automasi tidak diperlukan, cara yang paling mudah adalah seperti berikut:

    $ git rebase -i HEAD $name_of_branch_b

    Editor akan memaparkan lima baris dari b1 hingga b5, memadamkan dua baris b1 dan b5, simpan dan keluar.

    balas
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-02 09:34:03

    Mungkin sukar untuk mendapatkan jawapan yang lebih baik, bukan? Menurut prinsip git-flow, dev-feature secara amnya tidak menggabungkan beberapa penyerahan tengah menjadi dev Mungkin keperluan penyoal adalah berdasarkan strategi pengurusan versi yang tidak munasabah Atau yang sangat istimewa. adegan.

    balas
    0
  • 怪我咯

    怪我咯2017-05-02 09:34:03

    Sepatutnya hanya chrry pick

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-02 09:34:03

    Semua orang betul, tidak ada cara yang baik; tetapi saya masih mempunyai keperluan istimewa ini dalam proses kerja sebenar saya.
    Malam ini saya menggunakan kemahiran pengaturcaraan shell yang lemah untuk menulis program yang boleh mencapai keperluan saya, dan ia boleh dicapai melalui cherry-pick.

    Program kecil ini boleh memenuhi keperluan saya selagi ia dilaksanakan seperti berikut:

    # b5省略时取到最新的节点
    cherry-picks B b2 b5

    Seterusnya ialah debut saya: pautan github

    #!/usr/bin/env bash
    
    # 初始化
    targetBranch=
    start=
    end= #如果没有这读到最新
    currentBranch=$(git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3)
    
    # 切换到目标分支
    git checkout $targetBranch
    
    echo start proccess commit message...
    
    rawList=$(git log | grep '^commit' | sed '1,$s/commit//')
    
    startIndex=$(echo "$rawList" | sed -n "/$start/=" )
    
    # 如果end不为空,取得结束的偏移量,否则默认为1,也就是最新
    if [ -n "$end" ]; then
        endIndex=$(echo "$rawList" | sed -n "/$end/=")
    else
        endIndex=1
    fi
    
    # 取得需要cherry-pick的区间
    list=$(echo "$rawList" | head -$startIndex | tail +$endIndex)
    
    ## 倒序
    list=$(echo "$list" |sed '1!G;h;$!d')
    
    
    echo '待cherry-pick的有:'
    echo list:
    echo "$list"
    echo
    
    # 切换回当前分支
    git checkout $currentBranch
    
    for i in "$list"; do
        git cherry-pick $i
    done
    
    echo '完成'
    exit 0

    balas
    0
  • Batalbalas