SourceTreeで failed to push some refs ~ と出た時の対処法
作業開始時にプルをして、プッシュするときにこのエラーが出た。
やったこと
フェッチをしてから再度プルした。
わかったこと
調べたらたくさん出てきたので書いておきます。
SourceTreeで failed to push some refs〜のエラーが出る
原因① リモートブランチに先に誰かの変更が入っている
→プルするとローカルにリモートの変更がマージされるのでプッシュできるようになる
運用ルールに沿って変更を反映するには以下の手順でやり直し
- フェッチ->SoureTereeでローカルブランチとリモートブランチが枝分かれした状態が見えるようになる
- ローカルブランチから作業用ブランチを作成
- ローカルブランチをチェックアウト
- ローカルブランチを枝分かれする前のコミットまで巻き戻す
- プル->枝分かれが解消
- 作業用ブランチをチェックアウト
- 作業用ブランチをプッシュ->プルリクエスト
原因② 一度コミットした変更を上書きコミットで変更した
→そもそも一度プッシュしたコミットは変更してはいけない
→自分しかブランチを見ていなければ、こっそりリモートブランチを削除してプッシュし直しても平気
誰かに見られている場合は以下の手順でやり直し
- SourceTreeで見るとローカルブランチとリモートブランチが枝分かれした状態になっている
- ローカルブランチを枝分かれする前のコミットまでまで巻き戻す
- プル->枝分かれが解消
- 変更を追加コミット->プッシュ
最後に
何はともあれ私の場合はフェッチしてからプッシュしたらちゃんとリモートにプッシュされていました。