Rumah > Soal Jawab > teks badan
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.
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?
黄舟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.
过去多啦不再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.
淡淡烟草味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