1

ブランチ B にいると、ブランチ A と B の両方に存在するコミットを修正する必要があることに気付きました。

#!/bin/bash -eu
rm -rf 1
mkdir 1
cd 1
git init

echo 1 >1
git add .
git commit -am 1
echo 2 >2
git add .
git commit -am 2
echo 3 >3
git add .
git commit -am 3

git checkout -b B

echo 22 >2
git add .
git commit -am 2

git rebase -i HEAD~3   # fix second commit with fourth one, like this:
                       # pick 485dacc 2
                       # f 976dc2a 2
                       # pick d899817 3

git rebase master || true
echo 22 >2
git add .
git rebase --continue
4

1 に答える 1

2

最初のリベースの直前に、履歴は次のようになります。

* ab5f408 (HEAD, B) 2
* ef59c1a (master) 3
* 0a3437c 2
* f62884f 1

後で:

git rebase -i HEAD~3   # fix second commit with fourth one, like this:
# pick 485dacc 2
# f 976dc2a 2
# pick d899817 3

次のようになります。

* 33211f1 (HEAD, B) 3
* af315cd 2
| * ef59c1a (master) 3
| * 0a3437c 2
|/  
* f62884f 1

あなたが望むと思う場所でマスターを取得するには:

git checkout master
git reset --hard B

これにより、次のものが得られます。

* 33211f1 (HEAD, master, B) 3
* af315cd 2
* f62884f 1
于 2013-05-23T20:01:06.203 に答える