リモートのベアリポジトリのブランチでコミットを削除するにはどうすればよいですか?

skrrgwasme

問題の説明

私は自分自身をぎこちなくしました。この画像は、私が自分自身を置いた状況を示しています。

開発者のコ​​ミット

当然のことながら、早送りではない更新が拒否されるため、グリーンコミットをプッシュできなくなりました。リモートで、リモートgit reset --hard HEAD~1のコミットを消去するコマンドを実行できるようにdevブランチをチェックアウトしようとしましたが、これはベアリポジトリであるため、devブランチをチェックアウトできません。現在のブランチは常に「マスター」です。私の目標は、リモートの赤いコミットを削除して、緑のコミットをプッシュできるようにすることです。

質問

リモートのdevブランチをチェックアウトせずに、リモートdevブランチの赤いコミットを削除するにはどうすればよいですか?

ノート

  • 他のリポジトリがリモートからプルし、それらを壊したくないので、プッシュを強制したくありません。ただし、まだ誰もリモートからプルしていないことを知っているので、赤いコミットを削除するだけで大​​丈夫です。
  • 将来的には、git revert元に戻す必要のあるコミットがすでにプッシュされている場合は、代わりにコマンドを使用する必要があることがわかりました
  • また、マスターブランチ、リリースブランチ、およびイメージを単純化するために省略したさまざまな機能ブランチもあります。それらが関連しているかどうか教えてください。追加します。

関連する質問

私はこれらの質問(およびその他多くの質問)を調べましたが、リモートでコミットを削除するためのソリューションを適用する方法がわからないか、そうでないため、現在の質問に対応していないと思います。裸のリポジトリで動作します。

「Gitプッシュの早送り以外の更新が拒否された」とはどういう意味ですか?
Gitで最後のコミットを元に戻す方法は?
チェックアウトせずにブランチを早送りするにはどうすればよいですか?チェックアウト
せずにブランチをリベースします

ポーク

他のリポジトリがリモートからプルし、それらを壊したくないので、プッシュを強制したくありません。ただし、まだ誰もリモートからプルしていないことを知っているので、赤いコミットを削除するだけで大​​丈夫です。

フォースプッシュは、まさにここでやりたいことです。強制プッシュは、関係するすべての関係者のリモートリポジトリを魔法のように破壊するわけではありません。代わりに、forceフラグを使用してプッシュすると、早送り以外の変更を行う必要がある場合でも、Gitにブランチポインターを更新するように指示するだけです。

これがあなたの(裸の)リモートでのあなたの状況だと想像してください:

A -- B -- C -- D
               ↑
             master

ブランチは、リポジトリの履歴内のコミットへの単なるポインタであることに注意してください。ここで、親としてE持つコミットをプッシュしたいCので、最初のステップでは、コミットを転送するだけです。

            /-- E
           /
A -- B -- C -- D
               ↑
             master

ここで、をmaster指すようにブランチを更新するようにリモートに指示Eます。通常の状況では、Gitはmasterに早送りできないため、これを拒否しますEしたがって、代わりに、強制的にプッシュして、Gitにその事実を無視するように指示する必要がありますしたがって、リモートリポジトリは次のようになります。

              master
                ↓
            /-- E
           /
A -- B -- C -- D

したがって、他のブランチがD(直接的または間接的に)指し示していない限り、そのコミットは「失われ」、最終的にはガベージコレクションされます。

通常、コミットを知っているD(そしてそれを指すローカルブランチを持っている)すべての人が新しいリモートで問題を抱えているため、これを避ける必要がありますたとえば、古いローカルがをmaster指している場合、代わりにDmaster指すようEブランチを手動でリセットする必要があります。したがって、通常、ルールは、D一度プッシュしたものを決して削除しないことです(技術的には履歴から削除ます)。

ただし、誰もフェッチしたことがないと確信している場合はD、これに問題はありません。一度も持っていなかった人Dは、それがD消えたことに気づかずmasterいつもこうだったと思いますそして、フォースプッシュの前に存在し、後でまだ存在する他のすべてのコミットは、状況について何も変更しません。重要なのは、フォースプッシュで「削除」されるコミットのみです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

すべてのローカルコミットを削除して、ブランチマスター(リモートリポジトリ)の最後のコミットに移動するにはどうすればよいですか?

分類Dev

リモートブランチの最新のコミットを削除するにはどうすればよいですか?

分類Dev

リモートリポジトリのすべてのブランチに対して「コミット時に」実行するようにXcodeボットを設定するにはどうすればよいですか?

分類Dev

特定のリポジトリで特定のコミットを含むブランチを一覧表示するにはどうすればよいですか?

分類Dev

リモートGitリポジトリのHEADブランチを削除するにはどうすればよいですか?

分類Dev

リモートブランチのコミットをリセットするにはどうすればよいですか?

分類Dev

ブランチを別のリモートリポジトリにプッシュするにはどうすればよいですか?

分類Dev

ブランチを保持しながら、特定のコミットポイントでgitリポジトリを最近のコミットと古いコミットに分割するにはどうすればよいですか?

分類Dev

ブランチ全体なしで最後の2つのコミットのみをリベースするにはどうすればよいですか?

分類Dev

TortoiseHgの「リモートリポジトリの新しいブランチ」警告を抑制するにはどうすればよいですか?

分類Dev

多くのブランチを含むリモートリポジトリを操作するにはどうすればよいですか?

分類Dev

GitHubのリモートブランチを新しいリモートブランチにコピーするにはどうすればよいですか?

分類Dev

プルリクエストの機能ブランチからOS固有のコミットを削除するにはどうすればよいですか?

分類Dev

あるリモートブランチを別のリモートブランチにマージするにはどうすればよいですか?

分類Dev

リモートリポジトリから最新のコミットを取得するにはどうすればよいですか?

分類Dev

リポジトリのブランチを新しいリポジトリにフォークするにはどうすればよいですか?

分類Dev

アカウント内のすべてのGitHubリポジトリをバッチアーカイブするにはどうすればよいですか?

分類Dev

別のgitリポジトリへのコミットをチェリーピックするにはどうすればよいですか?

分類Dev

ローカルブランチにある場合、そのリポジトリを既存のローカルリポジトリからリモートにプッシュするにはどうすればよいですか?

分類Dev

GitHubで、保護付きのブランチにコミットする権限をアプリに付与するにはどうすればよいですか?

分類Dev

既存のリポジトリのブランチから新しいGitHubリポジトリを作成するにはどうすればよいですか?

分類Dev

Eclipseのローカルリポジトリからコミットを削除するにはどうすればよいですか?

分類Dev

ウィジェットのインポート提案にマテリアルライブラリを使用するにはどうすればよいですか?

分類Dev

リポジトリのブランチとして他の2つのgitリポジトリを追加するにはどうすればよいですか?

分類Dev

gitで、特定のコミットを履歴(リベース)からプログラムで削除/削除するにはどうすればよいですか?

分類Dev

gitlabランナーのリポジトリ用にフェッチするアドレスを構成するにはどうすればよいですか?

分類Dev

githubリポジトリのコンテンツを削除するにはどうすればよいですか?

分類Dev

コマンドライン(Git Bash)からリモートGitリポジトリを削除するにはどうすればよいですか?

分類Dev

Gitのブランチのリモートトラッキングブランチを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    すべてのローカルコミットを削除して、ブランチマスター(リモートリポジトリ)の最後のコミットに移動するにはどうすればよいですか?

  2. 2

    リモートブランチの最新のコミットを削除するにはどうすればよいですか?

  3. 3

    リモートリポジトリのすべてのブランチに対して「コミット時に」実行するようにXcodeボットを設定するにはどうすればよいですか?

  4. 4

    特定のリポジトリで特定のコミットを含むブランチを一覧表示するにはどうすればよいですか?

  5. 5

    リモートGitリポジトリのHEADブランチを削除するにはどうすればよいですか?

  6. 6

    リモートブランチのコミットをリセットするにはどうすればよいですか?

  7. 7

    ブランチを別のリモートリポジトリにプッシュするにはどうすればよいですか?

  8. 8

    ブランチを保持しながら、特定のコミットポイントでgitリポジトリを最近のコミットと古いコミットに分割するにはどうすればよいですか?

  9. 9

    ブランチ全体なしで最後の2つのコミットのみをリベースするにはどうすればよいですか?

  10. 10

    TortoiseHgの「リモートリポジトリの新しいブランチ」警告を抑制するにはどうすればよいですか?

  11. 11

    多くのブランチを含むリモートリポジトリを操作するにはどうすればよいですか?

  12. 12

    GitHubのリモートブランチを新しいリモートブランチにコピーするにはどうすればよいですか?

  13. 13

    プルリクエストの機能ブランチからOS固有のコミットを削除するにはどうすればよいですか?

  14. 14

    あるリモートブランチを別のリモートブランチにマージするにはどうすればよいですか?

  15. 15

    リモートリポジトリから最新のコミットを取得するにはどうすればよいですか?

  16. 16

    リポジトリのブランチを新しいリポジトリにフォークするにはどうすればよいですか?

  17. 17

    アカウント内のすべてのGitHubリポジトリをバッチアーカイブするにはどうすればよいですか?

  18. 18

    別のgitリポジトリへのコミットをチェリーピックするにはどうすればよいですか?

  19. 19

    ローカルブランチにある場合、そのリポジトリを既存のローカルリポジトリからリモートにプッシュするにはどうすればよいですか?

  20. 20

    GitHubで、保護付きのブランチにコミットする権限をアプリに付与するにはどうすればよいですか?

  21. 21

    既存のリポジトリのブランチから新しいGitHubリポジトリを作成するにはどうすればよいですか?

  22. 22

    Eclipseのローカルリポジトリからコミットを削除するにはどうすればよいですか?

  23. 23

    ウィジェットのインポート提案にマテリアルライブラリを使用するにはどうすればよいですか?

  24. 24

    リポジトリのブランチとして他の2つのgitリポジトリを追加するにはどうすればよいですか?

  25. 25

    gitで、特定のコミットを履歴(リベース)からプログラムで削除/削除するにはどうすればよいですか?

  26. 26

    gitlabランナーのリポジトリ用にフェッチするアドレスを構成するにはどうすればよいですか?

  27. 27

    githubリポジトリのコンテンツを削除するにはどうすればよいですか?

  28. 28

    コマンドライン(Git Bash)からリモートGitリポジトリを削除するにはどうすればよいですか?

  29. 29

    Gitのブランチのリモートトラッキングブランチを取得するにはどうすればよいですか?

ホットタグ

アーカイブ