検索

ホームページ  >  に質問  >  本文

git 如何撤销一次remote的master commit?

除了在local reset后再push之外 有没有在remote直接reset之类的呢? 意义是不想remote有过多commit comment

PHPzPHPz2801日前712

全員に返信(4)返信します

  • 巴扎黑

    巴扎黑2017-04-21 11:18:23

    いいえ、git restart --hard を実行してから、git Push -f のみを実行できます。 git reset --hard 然后 git push -f

    你的问题询问的是如何撤销 remote 的 commit,唯一的办法就是本地修正然后又强制推送,并且很多人都已经提到,强制推送是非常坏的实践,除非必要或者个人未公开项目或者小团队项目(沟通成本较低)才可行。

    看了你给别的回答的评论,貌似你想清理提交历史,那么 git 相比于其它 VCS 在这方面绝对是非常在行的。你可以使用 git rebase 命令对历史进行重构,可以重新排序、合并、拆分一些提交,总之完全足够清理你所谓的脏历史。如果你想要对整个历史做某些确定的修改,还有 git fileter-branch

    あなたの質問は、リモートコミットを元に戻す方法について尋ねています。唯一の方法は、ローカルで修正してから強制プッシュすることです。必要な場合、または個人の非公開プロジェクトや小規模なプロジェクトの場合は、強制プッシュは非常に悪い習慣であると述べています。 (通信コストを抑えて)実現可能です。

    他の回答に対するコメントを読んだ後、コミット履歴をクリーンアップしたいようです。そのため、git は他の VCS と比較してこの点で間違いなく非常に優れています。 git rebase コマンドを使用して履歴を再構築できます。つまり、いわゆるダーティな履歴をクリーンアップするだけで十分です。履歴全体に特定の変更を加えたい場合は、git fileter-branch コマンドも利用できます。これは非常に柔軟であり、試してみる価値があります。

    私の提出プロセスについて話しましょう。私は通常、提出する前に目的に達するまでファイルを修正します。このときは、直接提出するだけではなく、vim および vim-fugitive プラグインを使用します。次に、ステージング領域で変更を段階的に再現し、適切なタイミングで送信します。変更全体を完了したので、各リビジョンで誰が最初と最後に行えばよいのかがよくわかっているので、比較的クリーンで明確、そして「アトミック」に行うことができます(つまり、1 つのコミットで、複数の変更を混合するのではなく、1 つの特定の変更のみを行います)いくつかの変更) ) 他の人によるコードレビューを容易にするため。

    ——————🎜 🎜最後に、SFは国内フォーラムのモデルとは異なり、質問、回答、質疑応答の方式ではないことに注意してください。質問に追加する必要があると思われる場合は、質問を直接編集して、すべてのフォロワーに通知されるようにします。他の回答のコメントを更新して質問を追加しただけの場合は、誰にも通知されません。 🎜

    返事
    0
  • PHP中文网

    PHP中文网2017-04-21 11:18:23

    インターネットにアップロードしたものはすべて歴史であり、歴史は尊重されなければなりません。一度公開すると、それはインターネット上での歴史となり、歴史は尊重されなければなりません。

    長い間悩んだ結果、アップロード後に変更すべきではないとだけ言いたいです。

    返事
    0
  • 黄舟

    黄舟2017-04-21 11:18:23

    私のアプローチは、ローカルで正しいバージョンにロールバックしてから、それを一度プッシュすることです。以前のコミットレコードを削除したい場合は、git rebaseを使用する必要があるようです

    返事
    0
  • 迷茫

    迷茫2017-04-21 11:18:23

    参照: Github に間違ったコミットを送信した後の対処方法

    返事
    0
  • キャンセル返事