1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み] ! [却下】マスター→マスター(フェッチファースト)

2022-01-02 16:42:55

質問

git respo を使用して、以下のコマンドを実行しようとしています。 $ git push origin master しかし、私はエラーが発生します。

! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:zapnaa/abcappp.git'

解決方法は?

答えはそこにあります。gitはあなたに最初にフェッチするように言っているのです。

おそらく他の誰かがすでにマスターにプッシュしていて、あなたのコミットが遅れているのでしょう。したがって、フェッチしてチェンジセットをマージし、それからまたプッシュできるようにしなければなりません。

そうしないと(さらに悪いことには --force オプション) を使用すると、コミット履歴を台無しにすることができます。

EDIT: 最後のポイントについてもう少し詳しく述べますと、ちょうどここの人が --force というオプションがあります。

git は DVCS であるため、理想的には多くの開発者があなたと同じプロジェクトで同じリポジトリ(またはそのフォーク)を使って作業しています。もしあなたがチェンジセットで強制的に上書きしてしまうと、あなたのリポジトリは他の人のリポジトリと不一致になってしまうでしょう。あなたは他の人を不幸にし、リポジトリも被害を受けるでしょう。おそらく世界中の子猫が泣くことになるでしょう。

TL;DR

  1. 解決したい場合は、まずフェッチする(その後マージする)。
  2. ハックしたい場合は --force オプションを使用します。

前者を求めたのはあなたですが。自分でgitを使うにしても、常に1)を目指せ。