2

master と origin/master が分岐したとします。
私はマスターを使用しており、コミットの後にオリジン/マスターからのコミットを配置してから、--force をプッシュしたいと考えています。

     A---B---C origin/master
    /
D---E---F---G *master

     A---B---C origin/master
    /
D---E---F---G---A'---B'---C' *master

バリエーション 1:

git branch -f tmp
git reset --hard origin/master
git rebase tmp

「git reset --hard」はいくつかのファイルをチェックアウトし、「git rebase」はコミットを適用する前にそれらを再度書き換えるため、このバリアントは不適切です。余計な仕事です。
バリエーション 2:

git branch -f tmp origin/master
git rebase --onto master master tmp
git branch -f master
git checkout master

コマンドが多すぎます。これをたった1つのコマンドで実行したいのです。

4

1 に答える 1

2

私は答えを得ました:

git cherry-pick HEAD..origin/master

ただし、cherry-pick は rebase ほど知的ではなく、この場合コミット (k,l,m) を破棄できません。

     /--k---l---m---A---B---C origin/master
    /
D---E---k'--l'--m'---F---G *master
于 2013-04-18T08:24:38.703 に答える