こんな人が対象
-
これだけは押さえておきたいGitの仕組みを読んでも、
SourceTreeにすぐ怒られる
SourceTreeに怒られる原因はさまざま
- 自分がよく見るエラーの原因と対処方法をまとめました
- 自分の経験値の範囲内で書いているので、
あてはまらないケースもあるかも知れません
チェックアウトできない
error: Your local changes to the following files would be overwritten by checkout:
ファイル名
Please commit your changes or stash them before you can switch branches.
- 原因:作業コピーに変更がある状態で別のブランチをチェックアウトしようとしている
- 対処その1:現在のブランチに変更をコミットする
- 対処その2:新しくブランチを作って変更をコミットする
- 対処その3:スタッシュに変更を一時退避させる
- 対処その4:変更を破棄する(確認ダイアログの「クリーン(全ての変更を破棄)」をチェック)
ブランチが削除できない
error: Cannot delete branch 'ブランチ名' checked out at 'ローカルリポジトリ'
- 原因:作業中のブランチを削除しようとしている
- 対処:別のブランチに切替えてから削除する
error: The branch 'ブランチ名' is not fully merged.
If you are sure you want to delete it, run 'git branch -D ブランチ名'.
- 原因:どこにもマージされていないブランチを削除しようとしている
- 対処その1:マージが終わってから削除する
- 対処その2:強制的に削除(確認ダイアログの「削除を強行」をチェック)
プッシュできない
error: failed to push some refs to 'リモートリポジトリ'
-
原因その1:リモートブランチに先に誰かの変更が入っている
- 対処その1:プルをするとローカルにリモートの変更がマージされるので、
プッシュできるようになる
しかし、該当のブランチが直接コミット禁止で必ずプルリクエストをマージする運用ルールだったら、
そもそもコミットしてはいけない - 対処その2:運用ルールに沿って変更を反映するには、以下の手順で仕切り直す
- フェッチ->SoureTereeでローカルブランチとリモートブランチが枝分かれした状態が見えるようになる
- ローカルブランチから作業用ブランチを作成
- ローカルブランチをチェックアウト
- ローカルブランチを枝分かれする前のコミットまで巻き戻す
- プル->枝分かれが解消
- 作業用ブランチをチェックアウト
- 作業用ブランチをプッシュ->プルリクエスト
- 対処その1:プルをするとローカルにリモートの変更がマージされるので、
-
原因その2:一度プッシュしたコミットを上書きコミットで変更した
- 対処その1:一度プッシュしたコミットは変更してはいけない
※他の人のコミットグラフが崩れてしまうため
変更してしまったのをなんとかするにはその2〜3を参照 - 対処その2:自分しか見ていないブランチなら、
こっそりリモートブランチを削除してプッシュし直してもけっこう平気 - 対処その3:ブランチを誰かが見ているかもしれない場合は、以下の手順で仕切り直す
- SourceTreeで見るとローカルブランチとリモートブランチが枝分かれした状態になっている
- ローカルブランチを枝分かれする前のコミットまでまで巻き戻す
- プル->枝分かれが解消
- 変更を追加コミット->プッシュ
- 対処その1:一度プッシュしたコミットは変更してはいけない