web-dev-qa-db-ja.com

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

私はgitリポジトリにSourcetree for Windowsを使用していますが、コミットされていないコミットを元に戻したいと思います。

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

ローカルリポジトリを削除して、ローカルコミットなしで再度引っ張ることもできますが、別の方法があるでしょうか。

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

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

ソース: https://answers.atlassian.com/questions/153791/how-should-i-remove-Push-commit-from-sourcetree

編集

git revertについて:このコマンドは他のコミットを元に戻す新しいコミットを作成します。例えば。新しいファイルを追加するコミットがある場合は、git revertを使用して新しいファイルを削除するコミットを作成できます。

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

308
nightlyop

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

enter image description here

38
Muhammad Awais

あなたが他のブランチにいる場合、あなたが削除したいコミットのために最初に "このコミットにチェック"する必要がありますそしてそれからだけ前のライトコミットを選択する "現在のブランチをこのコミットにリセットする"。

0
pomaranga

コミットを削除する場合は、インタラクティブなリベースの一部としてコミットを実行できます。ただし、注意して実行してください。そのため、レポをめちゃくちゃにしないでください。

ソースツリー内:

  1. 削除するコミットよりも古いコミットを右クリックして、「xxxxの子をインタラクティブにリベース...」を選択します。クリックしたものが「ベース」となり、それ以降に行われたすべてのコミットに変更を加えることができます。
  2. 新しいウィンドウで、削除したいコミットを選択し、下部の「Delete」ボタンを押すか、コミットを右クリックして「 コミットの削除」。
  3. OK」(または「Cancel」をクリックします中止する)。

Sourcetreeでのインタラクティブなリベースの詳細については、こちらをご覧ください Atlassian blog post .

0
jna