38

masterにチェックインする必要があるいくつかのコミットをチェックインしましdevelopた。これらのコミットを master ブランチから削除し、develop ブランチに含めるには、どの git コマンドを使用すればよいですか?

4

4 に答える 4

53

私が間違っていなければ、2つの同期されたブランチが masterありdev、コミットする前にブランチを切り替えるのを忘れていました。

その場合、次のようになります。

----------------
git log in dev

xxx
yyy
...
----------------

と:

----------------
git log in master

ccc
bbb
aaa
        <---- here you forgot to switch branch
xxx
yyy
...
----------------

解決策は次のとおりです。

まず、次のことを確認してください。

git status -s

空の結果を返します。

次に、からからすべての新しいコミットを取得しmasterますdev

git checkout dev
git merge master

今あなたに戻りますmaster

git checkout master

不要なコミットを削除します。

git reset --hard HEAD~3

~3は、削除するコミットの数です。

覚えておいてください:git status -s空の結果を返す必要があります。そうしないと、git reset --hardデータが失われる可能性があります。

于 2013-03-06T17:07:46.557 に答える
1

通常、git で同じことを行うにはいくつかの方法があります。

git checkout develop
git cherry-pick XXX // XXX being the sha1 of the commit you want to grab
git checkout master
git rebase --interactive HEAD~IDX // IDX being the position of the last "good" commit compared to HEAD

最後のコマンドは、HEAD から最後の適切なコミットまでのすべてのレビューを表示し、コミットの行を削除してブランチ開発に移動するだけです。

于 2013-03-05T22:33:30.180 に答える