Sourcetree-プッシュされていないコミットを元に戻す


208

gitリポジトリにSourcetree for Windowsを使用していますが、プッシュされていないコミットを元に戻したいと考えています。

それは可能ですか?「コミットを元に戻す」を実行すると、最初のコミットを元に戻す2番目のコミットが作成されますが、最初のコミットをソース管理にまったく表示したくありません。

ローカルリポジトリを削除して、ローカルコミットせずにもう一度プルすることもできますが、別の方法があるのでしょうか。


私はスクリーンショットで詳細な記事を書きました。役立つことを願って共有:attosol.com/undo-in-git-using-sourcetree
Rahul Soni

回答:


345
  1. リセットしたいコミットを右クリックします(削除したいコミットではありません!)
  2. 「マスターをこのコミットにリセット」を選択します
  3. 「ソフト」リセットを選択します。

ソフトリセットは、ローカルの変更を保持します。

出典:https : //answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

編集する

About git revert:このコマンドは、他のコミットを取り消す新しいコミットを作成します。たとえば、新しいファイルを追加するコミットがある場合、新しいファイルgit revertを削除するコミットを作成するために使用できます。

ソフトリセットの適用について:あなたがコミットをしていたとAするEA---B---C---D---E)、あなたは(最後のコミットを削除したいですE)。次に、ソフトリセットを実行してコミットしDます。ソフトリセットを使用Eすると、コミットはgitから削除されますが、ローカルの変更は保持されます。git resetのドキュメントには他にも例があります


34
または、ブランチで作業している場合-「現在のブランチをこのコミットにリセット」
Tom Auger

5
これらのUIの説明がよくわかりません...現在のブランチをこのコミットにリセットすると、コミットが削除されるようには思えません。そして、それはあなたがもっと期待することをすることになりました。作業コピーを削除するのではなく、コミットにリセットします。
MrFox 2015年

@MrFoxに同意します。これを実行した後も、不要なコミットがツリーに表示されます。
Timmmm 2016年

@Timmmm:新しい説明は役に立ちますか?
nightlyop

実際、私はすでにコミットをgithubにプッシュしていることに気付きました。「履歴の書き直し」を解説した記事を見つけたのですが、やりがいよりトラブルのようです!
Timmmm 2016年

46

元に戻すログエントリを選択した場合は、[このコミットにリセット]をクリックできます。このオプションは、リバースコミットの変更をプッシュしなかった場合にのみ使用してください。変更が失われることが心配な場合は、ソフトモードを使用して、コミットされていない変更(変更したもの)のセットを残すことができます。混合を使用すると、作業コピーがリセットされますが、それらの変更は保持され、ハードは変更を完全に取り除くだけです。ここにいくつかのスクリーンショットがあります:

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


3
プッシュを示すアイコンが以前のコミットから利用可能である場合(ワイプしたばかり)、プルするとSourcetreeがUIを更新しているようです。
ChristoKiwi 2016

6

コミットを削除したい場合は、インタラクティブなリベースの一部として行うことができます。しかし、注意してそれを行うと、レポをめちゃくちゃにしてしまうことはありません。

ソースツリーで:

  1. 削除したいコミットより古いコミットを右クリックし、「xxxxの子を対話的にリベース...」を選択します。クリックしたものが「ベース」となり、その後に行われたすべてのコミットに変更を加えることができます。
  2. 新しいウィンドウで、削除するコミットを選択し、下部にある[削除]ボタンを押すか、コミットを右クリックして[コミットの削除]をクリックします。
  3. OK」をクリックします(中止する場合は「キャンセル」)。

Sourcetreeでのインタラクティブなリベースの詳細については、このアトラシアンのブログ投稿を確認してください。


これは私が探していた答えで、必要に応じて正確に機能しました。
クリフバートン

0

別のブランチを使用している場合は、削除するコミットを最初に「このコミットにチェック」する必要があります。その後、以前のライトコミットを選択して「現在のブランチをこのコミットにリセット」するだけで機能します。

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