SourceTreeでコミットされていない変更を破棄するにはどうすればよいですか?


83

私はGit環境に不慣れで、MacのSourceTreeでBitBucketを使用しています。私が今やりたいのは、最後のコミット以降の変更を破棄することだけです。どうすればよいですか?「変更の破棄」のようなものは見つかりませんでした。最後のコミットから直接プルしても機能しないようです。GUIまたはコマンドラインのいずれかで実行されたソリューションが適しています。


最後のコミットを元に戻したいということですか?または、それを残して、たとえばいくつかのテスト上の理由で前のコミットをチェックアウトしますか?
Mohammad AbuShady 2013年

1
@MohammadAbuShady答えはどちらでもないと思います。前回のコミット以降、破棄したい変更をいくつか加えました。最後のコミットを取り戻したい。
goldfrapp04 2013年

ですから、元に戻したいコミットされていない変更がありますか?
Mohammad AbuShady 2013年

ここでの回答はどれも、ソースツリーの上部にある迷惑な「コミットされていない変更」エントリを削除するのに役立ちませんでした。また、ステージングされていないファイルが多すぎて、1つずつ破棄できませんでした。ここでの答えはうまくいき
PVS

ステージングされていないファイルリストの項目を右クリックすると、コンテキストメニューオプション間で混乱しました。Discard(Shiftキー+ Ctrlキー+ R)及びRemove(Ctrlキー+デル)私の推測では、Discardのような変更を元に戻しますgit reset --hardRemove、削除するファイルや舞台を削除します。
赤エンドウ

回答:


62

私は使うのが好きです

git stash

これにより、コミットされていないすべての変更がstashに保存されます。これらの変更を後で破棄するgit stash drop(またはgit stash pop復元する)場合。

これは技術的には変更を破棄する「適切な」方法ではありませんが(他の回答やコメントが指摘しているように)。

SourceTree:トップバーでアイコン「Stash」をクリックし、その名前を入力して作成します。次に、左側の垂直メニューで、すべてのスタッシュを「表示」し、右クリックメニューで削除できます。STには、すべてのファイルを一度に破棄する方法はおそらく他にありません。


7
すべてのものを破棄したい場合は、それを行うのがさらに簡単ですgit reset --hard HEAD
Mohammad AbuShady 2013年

4
@cocoanutこれはstash関数の乱用であるため、私の答えは「間違っている」と思います。モハマドの答えは、すべての変更を破棄する適切な方法です。
最大

はい、また、ショートカットがどこにあるのかわからなかったためです。
ロベルト

3
気が変わった場合に変更を復元する最後のチャンスが得られるので、この方法が好きです。私はめったにreset --hardありませんが、変更を隠して新しく開始し、後で必要ないと判断した場合は隠しておくことがよくあります。
最大

このメソッドは、バージョン管理されていない新しいファイルを削除しませんでした。その場合、リセットとクリーンを使用するロベルトの方法がうまく機能しました。
Gabriel Jensen

143

SourceTreeマック、右(に廃棄にしたいファイルをクリックして作業ツリー内のファイルリスト)、および選択しリセット

SourceTreeのためのWindows、右のあなたは(に破棄したいファイルをクリック作業コピーの変更点のリスト)、および選択し破棄を

gitの、あなたは単にやると思います。

git reset --hard バージョン管理されたファイルに加えられた変更を破棄します。

git clean -xdf無視されたファイル(オプション)を含む、新しい(追跡されていない)ファイルを消去しxます。d追跡されていないディレクトリも削除しf、強制することです。


9
左側のパネルで「WorkingCopy」全体を右クリックすることもできます(またはCmd + Shift + Rを押します);-)
Geo

14
同じコマンドのMacとWindowsの名前が異なるのは驚くべきことです。Git GUI(コマンドラインと比較して)がまだ十分に混乱していないかのように。
NSTJ 2015年

ありがとう!私はこれが正しい答えとして投票されるべきだと思います;
Hernan Arber 2015年

@NSTJ:同意しました... gitツールに関して「リセット」や「破棄」などの用語に一貫した定義を割り当てる可能性についての自信をかなり揺るがします。つまり、広く合意されることが期待できる定義です。
LarsH 2016年

7

ステージングされていないファイルで、右側の3つのドットをクリックします。クリックすると、ポップオーバーメニューが表示されますDiscard file


2
これは、ファイルが少ない場合は問題ありませんが、ファイルが多い場合はどうなりますか?
Itai Spector

4

さて、私の質問はすでに質問のタイトルで回答されていることに気づきました。

ファイルのステージングを解除するには、

git reset HEAD /file/name

そして、ファイルへの変更を元に戻すには

git checkout -- /file/name

フォルダ内にファイルのバッチがある場合は、フォルダ全体を元に戻すことができます

git checkout -- /folder/name

これらのコマンドはすべて、次の場合にすでに表示されていることに注意してください。 git status

ここでダミーのリポジトリを作成し、3つの可能性すべてをリストしました

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   test2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test3

3

sourcetree guiから、作業中のディレクトリをクリックし、破棄するファイルを右クリックして、[破棄]をクリックします。


2

次のようにしてください、

  • クリック commit
  • を押しCMD+Aてすべてを選択しますdelete or discard
  • Right click 削除する選択したコミットされていないファイル
  • Removeドロップダウンリストから選択します

1

わかりました。シンプルなWindowsソースツリーでは、macOSでもしばらく探しました。

ソースツリーでCommand + Shift + Rをクリックすると、個々のファイルまたはすべてを破棄できる非表示のポップアップが表示されます。なぜこれが隠されているのですか?私たちは決して知りません..しかしそれはうまくいきます!

ここに画像の説明を入力してください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.