2012-03-16 16 views

答えて

3

私はあなたがローカルにロールバックし、結果をプッシュすることができると思います。

+3

あなたはそれを行うことはできますが、その間にコミットを取得した他の誰もが...悪い言葉を避けるために、「彼らはあなたの行動から回復するためには一生懸命働かなければならないでしょう" :-)以前のコミットを元に戻す新しいコミットを追加するには、 "git revert"を使う方が良いでしょう。 (元のコミットを完全に元に戻すというパッチが追加されていると考えてください) – torek

+0

@torek最初はこれを考えていましたが、shadowfaxは他のものを持っている可能性がありますすべてのリモートコミットを正しく実行できるようにするなどの目的で使用します。そうしないと、「復帰とプッシュ」が考えられます。 – peter

+1

あなたは 'git revert'を理解していない人がどれくらいいるのか驚くかもしれないと思います。一方、全く異なる動機があるかもしれません(David M. Syzdekの答えのように)。いくつかのケースでは、良い解決策はありませんが、状況の悪い悪いものはありません。 – torek

27

すでにリモートリポジトリにコミットをプッシュしているので、リモートリポジトリから既に取得した人には問題が生じないように、2つのコミットを元に戻すことをお勧めします。

例には、歴史をコミット次のコマンドを使用します。

e512d38 Adding taunts to management. 
bd89039 Adding kill switch in case I'm fired. 
da8af4d Adding performance optimizations to master loop. 
db0c012 Fixing bug in the doohickey 

あなただけの歴史を変更することなく、コミットを元に戻したい場合は、以下の操作を行うことができます

git revert e512d38 
git revert bd89039 

また、あなたはドンが」他の人がkillスイッチを追加して削除したことを他の人に見てもらいたい場合は、次のコマンドを使ってリポジトリをロールバックすることができます(ただし、すでにリモートから変更を取得した他の人には問題が起こります)。

git reset --hard da8af4d 
git push origin -f localBranch:remoteBranch 

localBranchはローカルブランチの名前で、remoteBranchはリモートブランチの名前です。

+3

「管理にトーンを加える」と、古い(新しい? :-) – torek

+6

@torek私は言うことができる、私はコミットした酒飲みと飲酒コミッターの両方です。 –

0

まず、このコマンドを入力します。

git log -n 4 

このコマンドは、最後の4回のコミットをSHAで表示します。その後、次のコマンドを入力します。

git rebase -i SHA_ID 

SHA_IDの代わりに、削除するコミット前のコミットのSHAを入力します。

このファイルが開くと、そのファイルの一番上にSHAと削除するコミットのメッセージが表示されます。この行を削除し、ファイルを保存して終了します。

これを済ませたら、プッシュする必要があります。したがって、次のコマンドを入力します。

git push -f origin master 

これを実行すると、コミットが削除されたことがわかります。

関連する問題