質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

2回答

2171閲覧

SorceTreeでスタッシュを削除した場合、ファイルの変更内容はどうなりますか?

sakura-shi

総合スコア93

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2018/04/09 13:22

編集2018/04/09 15:06

●疑問1
スタッシュを削除したい
掲題のとおり、SourceTreeでスタッシュを削除した場合、変更した内容は元に戻るなんてことはないでしょうか?
(gitに慣れていなくて、まだ試していません。)

スタッシュを削除したい理由のひとつは、
git pull --rebaseをしたいのですが、SourceTreeでのやり方がわからず、
都度ターミナルを開いて、git pull --rebaseと入力しています。
その際に、スタッシュの影響だと思うのですが、
error: cannot pull with rebase: You have unstaged changes.
error: please commit or stash them.
というメッセージが表示されてしまうからです。

削除したい理由はもうひとつあります。
スタッシュはしたものの、その後、対象のファイルをさらに編集したのでスタッシュの意味がないのではないかと・・・(あくまでも自己判断で)思っています。
(スタッシュは、変更したファイルはまだコミットしないけど、ちょっと脇に置いておく、っていう解釈をしています。間違っていないか?)

●疑問2
SourceTreeでgit pull --rebaseを実行する方法を知りたい

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

●疑問1
スタッシュをポップするのではなく削除するだけなのであれば、
ワーキングツリーの変更した内容が元に戻ることはないと思います。

●疑問2
SourceTreeでプルボタンを押すと、プルのダイアログが表示されると思いますが、
そこに表示されているオプションのとこに、「マージの代わりにリベースする」というのがあります。
これじゃないでしょうか。
イメージ説明

投稿2018/04/09 14:32

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

●疑問1

その際に、スタッシュの影響だと思うのですが、

スタッシュの影響ではなく、変更があるためです。
エラーメッセージは以下のような意味です。

エラー: ステージされていない変更があって、リベースできません。 エラー: それらをコミットまたはスタッシュしてください。

ですので、対処としては以下のような手順になると思います。

  1. まず現在の変更を、コミットできるようならコミット、まだコミットしたくないならスタッシュ(退避)する。
  2. リベースする。
  3. 1でスタッシュ(退避)していた場合はそれを戻す(退避した変更を適用する)。

ご注意: SourceTree では、メニューやボタンによっては、スタッシュが「退避」と表現されています。

スタッシュはしたものの、その後、対象のファイルをさらに編集したのでスタッシュの意味がないのではないかと・・・

これは変更の内容によるかと思います。

●疑問2

  1. サイドバーでブランチをダブルクリックする(ブランチに移動する)。
  2. サイドバーで「履歴」を選択し、右に表示される履歴の一覧で分岐元(現在のブランチとは別)の先端の履歴を右クリックして、「リベース...」を選択する。

コンフリクトが発生しなければすんなりいくと思います。

投稿2018/04/09 14:29

編集2018/04/14 00:49
Lulucom

総合スコア1899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura-shi

2018/04/09 15:16

ありがとうございます。 疑問1について エラーメッセージをそのまま読むと、スタッシュを削除し、編集(スタッシュ後再度編集)したファイルをステージしておくとgit pull --rebaseが実行できるということでしょうか?
sakura-shi

2018/04/09 15:20

疑問2について 2の手順で「リベース」は選択できませんでした。 確認ですが、右の一覧とは、「ログ」タブのことでよいですか?
Lulucom

2018/04/10 00:13 編集

> エラーメッセージをそのまま読むと、スタッシュを削除し、編集(スタッシュ後再度編集)したファイルをステージしておくとgit pull --rebaseが実行できるということでしょうか? いえ、 - 作業中の変更(編集したファイル)があるのでリベースできないよ - 作業中の変更(編集したファイル)をコミットまたはスタッシュ(退避)しておくと、リベースできるよう になるよ ということです。 スタッシュ(退避)すると、SourceTree のサイドバーの「一時退避」というところに、退避した変更が表示されます。 リベース後は、スタッシュを戻したいですよね。サイドバーの「一時退避」から該当の変更を選択して右クリックで「退避した変更を適用」すると戻せます。 もしかすると「スタッシュ」の意味を勘違いされているかな?と感じました。 スタッシュ: 変更を一時退避すること
Lulucom

2018/04/10 00:10 編集

> 2の手順で「リベース」は選択できませんでした。 > 確認ですが、右の一覧とは、「ログ」タブのことでよいですか? はい、サイドバーで「履歴」を選択しているときに、右に表示される履歴の一覧です。 そこで、分岐元(現在のブランチとは別)の先端の履歴を選択して、右クリックすると「リベース...」メニューがあるかと思います。(選択する履歴を間違ってないでしょうか?) SourceTree のバージョンによって表示が若干異なるのかもしれません。 私もいつもやり方を忘れてしまい、結局コマンドでやってしまいますが...
sakura-shi

2018/04/13 12:17

スタッシュ: 変更を一時退避すること ファイルの変更を、コピーのように、脇に避けておく(退避) と解釈しています。 つまり、スタッシュを削除しても、変更したファイルには特に影響ないということですね?
Lulucom

2018/04/14 00:45 編集

はい、スタッシュの意味は合っていると思いますが、コピーというよりは、カットですかね。 スタッシュへ移動した変更はスタッシュにしか残りません。 不要なスタッシュなら削除して構いません。 不要なスタッシュを削除しても、変更した内容が元に戻るということはありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問