2017-06-07 4 views
2

私は間違った支店を押してしまったので、私は新しい支店を押したいですが、私はmaster支店を押しました。最後にコミットされたプッシュを元に戻し、最後のコードを取得して新しいブランチに再度プッシュする方法はありますか?Githubを最後に押し戻します。

+0

[どのように私はGitHubの上のコミットを削除することができますか?](https://stackoverflow.com/questions/448919/how-can-i-remove-a-commit-on-github)の可能性のある重複 –

+0

私は最後のコミットを削除したくない、私は最後のコミットを編集したい。 どうすればいいですか? ローカルコミットで最後にコミットしたいだけです。 可能ですか? –

+0

最後のコミットメッセージを編集することを意味しますか? –

答えて

3

にリセットされますが、最後に元に戻すローカルmasterブランチからソフトリセットでコミットし、ローカル変更を保持(作業ツリー内)。新しいブランチへ

$ git checkout master 
$ git reset --soft HEAD~1 

$ git log    # make sure the last commit is reverted successfully as you expect. 

チェックアウト(たとえば、feature)。追加、コミット、リモートブランチへのプッシュ(featureここ)。

戻るローカル master
$ git checkout -b feature # checkout new branch with the local changes 
$ git status    # see the changed files 
$ git add . 
$ git commit -m 'message' 
$ git push origin HEAD 

およびリモート・マスター(最後のコミットを削除します)を更新する力プッシュを行う

$ git checkout master 
$ git push -f origin HEAD 

NB:リモート・マスターの歴史を変えるため、必要なフォースプッシュ。


代替:あなたは力のプッシュ許可または他の誰かがorigin/masterを引っ張り、あなたの最後すでにコミット持っていない場合。その後、リセット(履歴変更)ではなく最後のコミットを元に戻す方が良い。

$ git checkout master 
$ git log      # copy the last-commi-hash 
$ git revert <last-commit-hash> 
$ git push origin HEAD   # note, no force push is needed 

最後にコミットし、リモートにプッシュ新しいブランチを作成し、桜選びます。

$ git checkout -b feature 
$ git cherry-pick <last-commit-hash> 
$ git push origin HEAD  
+0

私は私のコミットをプッシュしている私の支店にいます。 私は 'git reset --soft HEAD〜1'コマンドを実行しましたが、ローカルの変更でファイルが見えません。 ファイルはどこにありますか? これらはgitログにもありません。 –

+0

@Moses Nandwaが言ったように 'git reset --hard" commit id "'を実行しましたか? –

+0

'git reflog'はあなたが実行したコマンドの全履歴を表示します。最後のコミットハッシュと 'git checkout 'によってそのコミットにチェックアウトしてください。今すぐ答えに従ってください。 –

0
git log 

これは をあなたにすべてのコミットのログを与え、その後、git reset --hard "commit id"ます。これは、与えられたヘッド

+0

最後にコミットされたファイルを元に戻し、これらのファイルをローカルの変更に変換しますか? –

+0

リセットを実行するとコミットが削除されるか、またはファイルがローカルの変更に反映されますか? –

関連する問題