2011-01-17 6 views
1

私は自分のコミットで私の電子メールを変更する方法をChange the author and committer name and e-mail of multiple commits in Gitから見てきました。私はそれをプッシュしようとすると、しかし、私はこのエラーを取得する:Git:コミット時に電子メールを変更し、更新履歴をリモートリポジトリにプッシュするにはどうすればよいですか?

$ git push production master 
To [email protected]<remote_server> 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]<remote_server> 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes before pushing again. See the 'Note about 
fast-forwards' section of 'git push --help' for details. 

それでは、私はリモートレポにコミットメール-変更コマンドを実行しようとしましたが、それはすべてあなたYou need to run this command from the toplevel of the working tree.

答えて

2

私を示していリモートリポジトリのブランチを上書きするには、git push --forceを使用する必要があります。

悪い考えてください。他の人がリモートリポジトリの現在の内容に基づいて長期的なブランチを持っているとします。その場合は、履歴をまったく変更しないでください。

しかし、頻繁に捨てられて再生成され、上流ブランチに合併されない短期ブランチ(例えば、毎日自動的に再生され、自動テストにのみ使用されるlinux-next)はまったく問題ありません。

+0

私は個人的に知っているこのレポには別のコミッターしかいません。プッシュが強制されるなら、彼は何か問題があるだろうか?彼はちょうどgit引っ張って普通にすることができます –

+2

git-pullを実行すると、古い電子メールアドレスを持つ彼の古い履歴はすべて新しい書き換えられた履歴とマージされます(私はどのような衝突が起こるのか分かりません)両方のバージョンの履歴をリポジトリに保存します。あなたが彼の古いリポジトリを捨てて、新しいクローンを作るために彼と調整することができれば、それはうまくいくかもしれませんが、彼が現時点で他の改善をしたら、彼はそれらを失います。 **今はあきらめてはいけません。新しいコミットのために新しい電子メールアドレスを使用し、古いコミットだけを残してください。** –

関連する問題