Help us understand the problem. What is going on with this article?

プルリクに他の人の変更が混ざってしまった

機能の開発が終わり、コンフリクト多分起こってるからプルリク出す前に最新にしてコンフリクト解消してプルリク出すかーとgit pull origin マスターブランチ しました。

差分をSourceTreeで見てみると画像のような感じで色々変更があり、既にステージングされています。https___qiita-image-store_s3_ap-northeast-1_amazonaws_com_0_210106_7a027f68-575d-eef4-f1b8-2b6fc76a6abb.png

そこで私は「あれ?このままプッシュしてプルリク出すと他人の変更が自分の差分として出てしまうのでは?」と思い画像左上の「ステージング済みのファイル」のボタンを押しました。(逆にこの操作をしたせいで他の人の変更が自分のプルリクに出てしまいました…)
その後コンフリクトを解消しコミット、プッシュしプルリクを出しました。File Changedのタブを見ると、数が100を越えていました。
自分で変更したファイルはせいぜい3つなので、明らかに他の人の変更が差分として出ていました。

リカバリー

一応バックアップとしてブランチのコピーを作ります。

git branch 作業ブランチのコピー
git reset --hard [戻りたいところのコミットハッシュ]

最初にgit pullした後にコミットしてたのでチェリーピックします。

git cherry-pick [入れたいコミットハッシュ]
git pull origin [マスターブランチ]

既にプッシュしちゃってるのでfource pushします。

git push -f origin 作業ブランチ

以上の方法でリカバリーしました。

まとめ

そこで私は「あれ?このままプッシュしてプルリク出すと他人の変更が自分の差分として出てしまうのでは?」と思い画像左上の「ステージング済みのファイル」のボタンを押しました。

これ、ステージングを解除してるのでコマンドとしては

git reset

をしたことになります。

SourceTreeは便利ですが何か操作するときはコマンドにするとどんなコマンドになるのか知った上で操作すべきという教訓になりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away