読者です 読者をやめる 読者になる 読者になる

Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

Git(SourceTree)でブランチを切り替えただけなのにエラーになって元のブランチに戻れなくなった場合

Git SourceTree

SourceTreeでmasterの変更をdevelopにマージ(普通は逆)しようと思って

masterに変更(コミット漏れ)がないことを確認してdevelopに切り替えて

masterを選択して右クリックメニューから"現在のブランチにmasterをマージ"を選んでマージしようとすると以下のエラーが…。

f:id:finalstream:20160917202114p:plain

git -c diff.mnemonicprefix=false -c core.quotepath=false merge master
Updating 41add75..b1b180a

error: Your local changes to the following files would be overwritten by merge:
    ExplorerWindowCleaner/Actions/AddFavoriteAction.cs
    ExplorerWindowCleaner/Actions/SwitchPinAction.cs
    ExplorerWindowCleaner/App.xaml.cs
    ExplorerWindowCleaner/AppUtils.cs
    ExplorerWindowCleaner/Explorer.cs
    ExplorerWindowCleaner/ExplorerCleaner.cs
    ExplorerWindowCleaner/MainWindow.xaml.cs
    ExplorerWindowCleaner/NotifyIconContainer.Designer.cs
    ExplorerWindowCleaner/NotifyIconContainer.cs
    ExplorerWindowCleaner/Properties/AssemblyInfo.cs
    ExplorerWindowCleaner/Properties/Resources.Designer.cs
    ExplorerWindowCleaner/Properties/Settings.Designer.cs
    ExplorerWindowCleaner/SpecialFolderManager.cs
Please, commit your changes or stash them before you can merge.
Aborting

ただブランチ切り替えただけなのになんで変更が…?
なんかよくわからないので一旦masterに戻って落ち着こうと思って

masterに切り替え(クリーンにチェックをいれた状態で)ようとすると以下のエラーが…。

f:id:finalstream:20160917202039p:plain

git -c diff.mnemonicprefix=false -c core.quotepath=false reset -q --hard HEAD --

git -c diff.mnemonicprefix=false -c core.quotepath=false checkout master
error: Your local changes to the following files would be overwritten by checkout:
    ExplorerWindowCleaner/Actions/AddFavoriteAction.cs
    ExplorerWindowCleaner/Actions/SwitchPinAction.cs
    ExplorerWindowCleaner/App.xaml.cs
    ExplorerWindowCleaner/AppUtils.cs

    ExplorerWindowCleaner/Explorer.cs
    ExplorerWindowCleaner/ExplorerCleaner.cs
    ExplorerWindowCleaner/MainWindow.xaml.cs
    ExplorerWindowCleaner/NotifyIconContainer.Designer.cs
    ExplorerWindowCleaner/NotifyIconContainer.cs
    ExplorerWindowCleaner/Properties/AssemblyInfo.cs
    ExplorerWindowCleaner/Properties/Resources.Designer.cs
    ExplorerWindowCleaner/Properties/Settings.Designer.cs
    ExplorerWindowCleaner/SpecialFolderManager.cs
Please, commit your changes or stash them before you can switch branches.
Aborting

え、ナニコレ、Gitこわい。

自動で破棄できなかったら手動で破棄しようということで以下のように 手動で破棄を選択しても消えない。破棄されない。

f:id:finalstream:20160917202011p:plain

詰んだ。。。

しばらく落ち着いてからいろいろと見渡すと破棄というメニューの中に 全てリセットという危険なボタンがあることを発見。
全て?どこから??と思いつつ、念のため、フォルダのバックアップを取って 思い切って実行してみた。

f:id:finalstream:20160917202926p:plain

f:id:finalstream:20160917203211p:plain

念押しで聞いてくるメッセージが出て、危険な行為をしていることを自覚した。

数分悩んだけどもこれしかないのでOKを押すと…。

f:id:finalstream:20160917203549p:plain

コミットされていない変更がありますという表示が消えていない。
嫌な予感がしつう、もっかいmasterをチェックアウトをしようとしたがエラーが変わっていない。
何も変わってない。

ほんとに詰んだ。。。

しばらく落ち着いて考えてみる。
コミットされていない変更がありますという言われているのだから言うとおりにコミットしてしまえばいいのではということでコミットをしてみることにした。

f:id:finalstream:20160917204411p:plain

そして再びmasterに切り替えてみると…

f:id:finalstream:20160917204648p:plain

戻れた。生還したー。

ブランチを切り替えて、変更を破棄しても破棄されず、元に戻れなくなった場合はコミットすればいいということですね。

破棄しても破棄されなかったのは何だったんだろう。。