LoginSignup
3
1

More than 5 years have passed since last update.

git pushがrejectされたとき

Posted at

git pushしたときに下記のようなメッセージが表示されrejectされることがあります。
Updates were rejected because the tip of your current branch is behind
この事象について、いろいろな情報を参考にすることができますが、それらでも解決できなかったことがありました。
原因はgit-svnを理解できていなかったこと。
起きた事象の経緯は以下のとおり。

  1. svnサーバーAからgit-svnでチェックアウト
  2. 修正をいれて、gitサーバーBにpush
  3. svnサーバーAにコミット
  4. 修正をいれて、gitサーバーBにpush => reject!!

上記の状態となったとき何が問題になっているかというと、
ステップ3にて、コミット履歴がgit-svnによってステップ1を開始状態として
リベースされていることが問題となります。
ローカルの歴史がリベースされていることでgitサーバーBとは歴史が異なる状態となり
純粋なマージが行えない状態となります。
なので落ち着いて以下の対処を行えばよいようです。
5. gitサーバーBよりpull(マージ)。競合は適切に解決する。
6. 競合をコミットし、再度gitサーバーBにpush。

いろいろやって上記解決にたどりつきましたが、
gitのエラーメッセージだけでは上記の状況を理解するのは困難と思いました。

また、pushはできるようになりますが、コミット履歴はsvnとダブる状態となるなど
きれいな履歴にはならないので要注意です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1