如何触发rebase-merge冲突?

时间:2014-06-22 22:17:38

标签: git

我已经有一个用于解决git冲突的脚本,但是我仍然想要一种简单的方法来检查.git/rebase-merge目录。基本上我正在寻找如下脚本(这个是rebase-apply冲突):

#!/usr/bin/env bash
set -eu
rm -rf ~/_/1
mkdir ~/_/1
cd ~/_/1
git init
echo 1 >1 && git add 1 && git commit -m 1
git checkout -b devel
echo d1 >d1 && git add d1 && git commit -m d1
echo d2 >m1 && git add m1 && git commit -m d2
echo d3 >d4 && git add d3 && git commit -m d3
git checkout master
echo m1 >m1 && git add m1 && git commit -m m1
echo m2 >m2 && git add m2 && git commit -m m2
echo m3 >m3 && git add m3 && git commit -m m3
git checkout devel
git rebase master

UPD 据说在进行交互式rebase时需要进行压缩提交。

1 个答案:

答案 0 :(得分:0)

这是(sed脚本交换最后两次提交):

#!/usr/bin/env bash
set -eu
rm -rf 1
mkdir 1
cd 1
git init
echo 1 >1 && git add 1 && git commit -m 1
echo 2 >2 && git add 2 && git commit -m 2
echo 3 >3 && git add 3 && git commit -m 3
echo 4 >3 && git add 3 && git commit -m 4
echo 5 >3 && git add 3 && git commit -m 5
script=`mktemp` && trap 'rm "$script"' EXIT
cat >"$script" <<\SCRIPT
#!/usr/bin/env bash
set -eu
sed -i -rn '
    /^pick.*(4|5)$/!p
    /^pick.*4$/{x;b}
    /^pick.*5$/{p;x;p}
' "$1"
SCRIPT
chmod u+x "$script"
EDITOR="$script" git rebase -i HEAD~4   # GIT_SEQUENCE_EDITOR may be used in newer versions