Visual Studioでプッシュされていない送信コミットを削除する方法は?


114

Visual Studio 2017の新しいブランチの段階的な変更をローカルリポジトリに誤ってプッシュしました。リモートリポジトリにプッシュされていません。私はそれを取り除きたいが、これを行う方法を見つけることができません。ローカルマスターブランチから新しいブランチにリベースしました。次に、新しいブランチを削除しました。しかし、発信コミットはまだそれを示しています。削除または元に戻す方法は?

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


この質問をありがとう、私は同じ質問をしました
イムランリズビ

回答:


177

ブランチタイルからチームエクスプローラーの履歴タブを開きます(ブランチを右クリックします)。次に、履歴で、プッシュしたくないコミットの前のコミットを右クリックし、[リセット]を選択します。これにより、ブランチがそのコミットに戻り、行った余分なコミットが取り除かれます。したがって、特定のコミットの前にリセットするには、その親を選択する必要があります。

変更をどのように処理するかに応じて、hardを選択します。これにより、ローカルで変更が取り除かれます。または、コミットを取り消すが破棄されたコミットの変更を作業ディレクトリに残すソフトを選択します。


22
**めちゃくちゃにされたコミットの親でリセットを選択する必要がある部分を太字にする価値があります**-奇妙なことに、コミットした直後のVS2017は、コミットをターゲットにしたリセットを実行するメニューオプションを提供しますあなたがしただけです(何もしません)-投稿が見つかるまで数分費やしましたが、[[コミット]の親コミットをリセットする必要があることに気が付きました。特定のコミットをリセットする==そのコミットで使用する必要があることを意味します。それだったらリセットするために、私はより速くそれを理解しているだろう数える
キーズJard

1
(@JH)答えてくれてありがとう。.. atCJコメントありがとうございます。atJHその部分を太字にしていただきありがとうございます... atEverybody ....それは私が行き詰まった部分です... #freedom
granadaCoder

命名は、gitがコマンドを呼び出す方法と一致しています。ファイルを編集した場合、それらもリセットされます。ファイルをステージングした場合、それらもリセットされます。そのため、最新のコミットにもリセットがあります。そのコミットにリセットれます。
jessehouwing 2018

1
知っておくと便利です。答えてくれてありがとう
ロブC

Alot It Helpsss
Ashish Kamble

70

この問題を解決するのに役立つ適切な答えは1つも見つかりませんでした。

誤って変更をコミットしたブランチの名前がだとしますmaster。次の4つの簡単なステップは、私にとって世界のように証明されました。

  1. 支店に行く
  2. 以外のブランチを選択または作成する master
  3. ローカル/ワークスペースバージョンの削除 master
  4. からマスターに切り替え remotes/origin

5
これが機能する答えです。プッシュする必要はありませんrevert
sojim

2
これは機能しますが、送信コミットから特定のコミット(すべてではない)だけをコミットしたい場合は、行き詰まっています。
KatariaA

1
いくつかの反対票を受け取りました。コメントは素晴らしかったでしょう。
Chaos Legion

1
動作します。クリーンで高速かつシンプルなソリューション。
トムトム

2
ありがとうございます!今夜まで、変更を元に戻すのに45分かかったことはありません。あなたのコメントはその日を救います。
PBJ

3

最新の変更をサーバーにプッシュしたと仮定します。

  1. Visual Studioを閉じて、プロジェクトのローカルコピーを削除します
  2. Visual Studioを開き、[チームエクスプローラー]タブに移動して、[接続の管理]をクリックします。(プラグ)
  3. 接続の管理、プロジェクトへの接続の横にあるドロップダウン矢印をクリックします
  4. プロジェクトを選択し、ローカルパスを確認して、[接続]ボタンをクリックします。

プロジェクトを再度開くと、コミットと変更の両方がゼロになるはずです。


1

TL; DR:

git reset --soft HEAD~.slnフォルダーのcmdで使用


今日私はそれに直面していて、そのVSCodeようなことを示唆する圧倒されましたが、兄貴Visual Studioはそうではありません。

答えのほとんどは役に立ちました。以前に作成したコミットがさらにある場合、それらをすべて失うとイライラするでしょう。さらに、VSCodeそれが0.5秒以内に行われる場合、それは複雑であってはなりません。

jessehouwingの答えだけが単純なソリューションに最も近いものでした。


不要なコミットが最後に発生したと仮定すると、ここで私はそれを解決しました:

Team Explorer->に移動しSyncます。そこにはすべてのコミットが表示されます。Actionsドロップダウンを押して、Open Command Prompt

望ましくないコミットの解決例

コマンドウィンドウが表示されるので、と書きgit reset --soft HEAD~ます。複数の不要なコミットがある場合は、~(つまりgit reset --soft HEAD~5)の後に金額を追加します


(を使用していない場合はgit、口語的な使い方を確認してください)。

私はそれが役に立てば幸いです、そしてうまくいけば次のバージョンでVSチームはそれを組み込みで追加するでしょう


0

[チームエクスプローラー]タブに移動し、[ブランチ]をクリックします。ブランチで、remotes / originからブランチを選択します。たとえば、マスターブランチをリセットするとします。remotes / originのマスターブランチを右クリックし、[リセット]を選択して[変更の削除]をクリックします。これにより、ローカルブランチがリセットされ、ローカルでコミットされたすべての変更が削除されます。


0

ローカルマスターブランチをリモート/オリジンマスターブランチにリベースして、プロセス内の競合を解決してください。


-1

ここには、すべての送信コミットを破棄するか、特定のコミットを元に戻すかの2つのオプションがあります。

1-すべての送信コミットを破棄します。

すべての発信コミットを破棄するにはたとえば、リモートブランチからmasterという名前のローカルブランチがある場合、次のことができます。

1-ローカルブランチの名前をmasterから任意の名前に変更して、削除できるようにします。2-名前を変更したブランチを削除します。3-マスターから新しいブランチを作成する

これで、コミットなしの新しいブランチができました。

2-特定のコミット を元に戻す:特定のコミットを元に戻すには、不要なものを元に戻す必要があります。

1-不要なコミットをダブルクリックします。 不要なコミットをダブルクリックします 2-元に戻すをクリックします元に戻すを クリックします

ただし、元に戻されたコミットは、コミットの履歴にコミットが戻されたときに表示されます。

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