2012-01-03 9 views
5

http://blog.prabir.me/post/Undo-in-Git.aspx私は「Gitのプッシュ」を行った後、マイの最後のコミット、それはgit pushの後にgit commitをun-doできますか?ここから

This undo’s your commit and also resets your working tree to the last commit. 

1 git reset --hard HEAD^ 

言っしかし、どのように私がun-行うことができますか?

ありがとうございます。

私は 'Gitのログ' を実行すると私のトップが

commit 29fc764693a5933a379169e22891e4b0d3d2426f 
Merge: 002db49 cfb1d8f 

どうI 'のgitの差し戻し' は変更することができますをコミットするよう、私が手に?

は、私は、これは

$ git revert HEAD 
fatal: Commit 29fc764693a5933a379169e22891e4b0d3d2426f is a merge but no -m option was given. 

答えて

7

これは、新しいコミットを生成するgit revert HEADを使用すると、以前のコミットの変更を取り消します。 hereをご覧ください。ただし、コミットとリバートコミットの両方が履歴に表示されます。

編集:KingChrunchが述べたように、マージコミットを元に戻すときは、元に戻す親を指定する必要がありますので、-m <parent>を追加してください。もちろん、私が投稿したリンクに従うだけで、あなたにそう言ったでしょう。

共有リポジトリの履歴を変更することはできません。履歴を変更する傾向がある場合は、git resetgit push --forceまたはgit rebaseと使用できます。

+0

「致命的」とは何ですか:Commit 29fc764693a5933a379169e22891e4b0d3d2426fはマージですが、-mオプションは指定されていません。私は 'git revert HEAD'を実行するとこのエラーが発生しますか? – michael

+1

'git revert'は直前のコミットに戻ります。マージコミットを元に戻す場合は、少なくとも2つの親コミットがあり、誰がどちらがブランチであり、どちらがマージ親であるかは誰にも言えないので、それは簡単ではありません。 '-m 'オプションを使ってコミットしたいものを選択する必要があります。 'git help revert'を見てください。 – KingCrunch

2

あなたはgit revertコミットする必要があり得ます。

git resetの後のブランチにgit push --forceを置くこともできますが、その前にブランチを引っ張ってしまえば、履歴が分岐してしまいますので、実際には実行しないでください。

+0

しかし、私は 'git reset --soft HEAD ^'の変更をロールバックしたいので、 'git commit'と 'git push'を行い、その変更なしでコードをテストしたいのですが、 'git stash 'ビルドとテスト'。今私は 'git revert'をする前にgit stash popを実行する必要がありますか? – michael

0

GitLabとコードレビュー/マージ要求ステップを使用している場合は、さらに簡単な方法が見つかりました。誤って不要なファイルをコミット&プッシュに含めると、これが見つかりました。このメソッドを使用して、編集してマージ前にブランチに再設定することもできます。

私たちのプロセス:コーディングした後、上流からフェッチし、rebaseし、GitLabにプッシュします。 GitLabでブランチを作成し、そのブランチのマージ要求を作成します。これは、メインブランチに入る前に、すべてのコードがピアによってコードレビューされるようにするためです。このケースでは、ピアレビューの同僚が私のギャフを見つけたので、非常に有用なステップでした。

注:これは、マージ要求が受け入れられる前のオプションです。GitLabへとマージする前に押した後にコミットからのファイル削除するには

:GitLabが要求

  • をマージ

    1. オープンで、不要なファイルを検索
    2. 「変更]タブを選択します
    3. をコミットファイル
    4. のための「表示ファイル」ボタンをクリックしてコミット情報aを入力し「削除」ボタン
    5. をクリックします変更をコミットします

    あなたのマージ要求が修正され、不要なファイルがコミットから削除されました。マージできるようになりました(残っているコードレビューの場合)。

    また、この方法でファイルを編集して再設定することもできます。これは、Eclipse/IntelliJ(あなたが使用する他のどのツールを使用していても)を開き、ブランチをチェックアウトせずに、簡単に修正する簡単な方法です。

    これは、Eclipseのプッシュされたブランチからファイルを削除することを避けるための時間を節約しました。

  • 関連する問題