2016-10-25 12 views
-1

小チーム。同僚が間違ってorigin:masterにプッシュしました。彼は地元のレポをリセットしましたが、レポはのため、Githubにpush -fを送信できません。Github:前のコミットにリセット

私はfetchレポを編集しましたが、私のローカルmasterに彼の誤ったコミットをマージしていません...まだ。

push -fを元にすれば、間違いの前の状態を反映するようにGithubのoriginをリセットすることはできますか?

$ git push origin 2860a4c:master 
To github.com:example/myproj.git 
! [rejected]  2860a4c -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:example/myproj.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. 
hint: 'git pull ...') before pushing again. 

は、私は本当に私は、その後、私はreset hard 2860a4c、と仮定して、push -f originする前に、(git pullで)コミット悪いを統合する必要がありますか?

私は物事を悪化させたくありません。

+2

[Gitリポジトリを以前のコミットに戻すにはどうすればいいですか?](http://stackoverflow.com/questions/4114095/how-to-revert-git-repository-to-a-previous-commit) –

+0

gitコミットを元に戻すための記事がたくさんあることは知っています。しかし、Githubの最後のコミットを削除(リセット)する方法を明確に説明しているものは見つかりませんでした。私はコミットを「元に戻す」ことができると思いますが、可能であれば、ローカルリポジトリを吹き飛ばすことなく、最後のGithubコミットを元に戻す方法を見つけようとしています。 – Meltemi

+1

'-f'を指定しないとできません。'git revert'を使ってそのコミットを元に戻す必要がありますが、それはあなたの履歴の一部になります –

答えて

5

以下は、の場合、git push -fの許可を受けた場合の手順です。あなたのマシン上で

、ん:その後、次に

# Step 1: Take the changes from remote 
git pull 

# Step 2: Note the commit to which you want for restoring your repo to 
# using `git log`. Say the commit id is "x". 
git log 

# Step 3: Do hard reset for that commit. 
#   ** NOTE ** All the changes after the commit "x" will be removed 
git reset --hard x # where x is the commit id 

# Step 4: Push to remote 
git push -f 

同僚のマシン上で、step 3step 1を行うことは、リモートをマージするgit pullを行うには、あなたが権限を持っていない場合は


を変更しますgit push -fの場合:

git pull 

git revert <commit id> # may get it via "git log" 

git push 

git revertでは、復帰したコミットからの変更は削除されますが、このコミットはコミット履歴に残ります。

1

もしあなたがpush -fであれば、そうするよりも。あなたが望む状態が1トップ前にコミットされている場合は、

git pull 
git reset --hard @~1 
git push -f 

を実行することができ、チーム内の誰もが同期しているので、彼らはすべての作業を失わないことを確認してください。

1

あなたは悪いコミットを引き出す必要はないので、git resetもどちらも必要ではありません。 質問を正しく理解していれば、git push --forceで十分です。それは遠隔地の状態をあなたのものに持ち込むでしょう。

すでに悪いコミットを行った場合は、git reset --hard + git push --forcehttps://stackoverflow.com/a/37145089/1663197として使用してください。

+0

>どうすれば元に戻すことができますか? – AleXoundOS

関連する問題