2

私たちの会社では一種の git flow ワークフローを実装しましたが、まだ誰もが実際に git flow を使用しているわけではないため、問題がいくつかあります。これが1つです。

同僚が機能ブランチに取り組んでいて、現在マスターと開発中のいくつかのバグ修正が必要でした。しかし、彼は混乱し、develop を master ではなく機能ブランチにマージしたため、多くの不要な機能が取得されました。彼は私たちの git サーバーにプッシュしました。

今、私は彼のエラーを見て、それを修正しようとしました. マージコミットを元に戻しました

git revert -m 1 hismergecommit

そして彼のマージを元に戻しました。しかし、マスターを自分のブランチにマージしようとすると、マージするものが何もないと言われました! これは、master が gaff の前に開発にマージされていたという事実によるものと思われます。

ここに画像の説明を入力

写真は、それがどのように見えるかを示しています。

悪いマージの前に機能ブランチをリセットしたり、マスターのすべてのコミットをチェリーピッキングしたりすることなく、マスターを機能にマージする方法はありますか?

編集:

彼はブランチをサーバーにプッシュしましたが、他の誰もブランチをプルしていないので、この場合、履歴を書き換えることは「危険」ではないことを付け加えたいと思います。良い方法があるかどうか知りたいだけですこの種の問題が発生した場合に修正します。

4

2 に答える 2

1

ブランチをリセットすることの何が問題になっていますか?

私は次のように問題を再現しました:

git init .

echo line > file
git add file 
git commit . -m "added file"

# Create the branches
git branch -t feature
git branch -t dev

git checkout dev
echo dev-line >> file
git commit . -m "added dev-line"
echo test > another-file
git add another-file
git commit . -m "another file"
git merge master

git checkout feature
echo test > feature-file
git add feature-file
git commit . -m "feature commit"

# merge dev into the feature branch
git merge dev

# undo the merge
git revert -m 1 e04d9159fa54aaf06e7329a7799cc58fc3334d34


# Now we have this mess:
* add2b8ea6583c355cc49048b65f07ce697d9c01c Revert "Merge branch 'dev' into feature"
*   e04d9159fa54aaf06e7329a7799cc58fc3334d34 Merge branch 'dev' into feature
|\  
| *   b506d08d62b6434e1383d50eccc26d5a933703e2 Merge branch 'master' into dev
| |\  
| | * 18671754b703561587c3875d0f56bd99a2e08c74 another file
| * | 978c2f52d1cd10fc27af2f0a59f295d99ac20e28 added dev-line
| |/  
* | ac794379e0a2038822ca772ffb3098b5270f22c2 feature commit
|/  
* d416cf0e4a84517871e93e0ac13a60c586353a79 added file

# Now when we try to merge master we get 'Already up-to-date.' This is because master was already merged.
git merge master

最もクリーンな方法は、コミットする前に機能ブランチをリセットすることです。

git reset --hard ac794379e0a2038822ca772ffb3098b5270f22c2
git merge master

*   4fa1459304668ec7b8d61eed052f9161fce02435 Merge branch 'master' into feature
|\  
| * 18671754b703561587c3875d0f56bd99a2e08c74 another file
* | ac794379e0a2038822ca772ffb3098b5270f22c2 feature commit
|/  
* d416cf0e4a84517871e93e0ac13a60c586353a79 added file

次に、サーバーに強制的にプッシュします。

于 2013-05-28T21:43:07.203 に答える