Gitで「! [rejected] master -> master (fetch first)'
」を解決する方法を説明する良い方法はありますか?
このコマンド$ git Push Origin master
を使用すると、エラーメッセージが表示されます。
! [rejected] master -> master (fetch first)
error: failed to Push some refs to '[email protected]:zapnaa/abcappp.git'
答えはそこにあります。gitは最初にフェッチするよう指示しています。
おそらく他の誰かが既にマスターにプッシュしており、コミットが遅れています。したがって、フェッチし、変更セットをマージする必要があります。その後、再びプッシュできるようになります。
そうしない場合(またはさらに悪いことに、--force
オプションを使用して強制する場合)、コミット履歴を台無しにすることができます。
編集:私は最後の点についてさらに詳しく説明します。ここの人が--force
オプションを使用するという非常に悪いアドバイスをしたからです。
GitはDVCSであるため、理想的には他の多くの開発者が同じリポジトリ(またはそのフォーク)を使用して、あなたと同じプロジェクトに取り組んでいます。チェンジセットで強制的に上書きすると、「履歴を書き換えた」ため、リポジトリが他の人のものと一致しなくなります。あなたは他の人を不幸にし、リポジトリは苦しむでしょう。おそらく世界の子猫も泣くでしょう。
TL; DR
--force
オプションを使用します。あなたは前者を求めましたが。 gitを自分で常に使用する場合でも、1)常に行ってください。
試してください:
git fetch Origin master
git merge Origin master
このコードを書いた後、私は他のエラーを受け取りました:(non-fast-forward)
私はこのコードを書きます:
git fetch Origin master:tmp
git rebase tmp
git Push Origin HEAD:master
git branch -D tmp
そして私の問題を解決しました
git pull
を使用する必要があります。このコマンドはgit fetch
を実行し、次にgit merge
を実行します。
git Push Origin master --force
コマンドを使用する場合、将来問題が発生する可能性があります。
このgitコマンドを試してください
git Push Origin master --force
または力不足-f
git Push Origin master -f
プルは常に正しいアプローチですが、1つの例外は、非GitファイルシステムをGithubリポジトリに変換しようとしている場合です。そこで最初のコミットを強制する必要があります。
git init
git add README.md
git add .
git commit -m "first commit"
git remote add Origin https://github.com/userName/repoName.git
git Push --force Origin master
次のコマンドを使用できます。最初に--mirrorフラグを使用して、リポジトリの新しいコピーを複製します。
$ git clone --mirror git://example.com/some-big-repo.git
次に、それに応じてコードに従います。
コマンドラインを使用してGitHubに既存のプロジェクトを追加する
それが機能しない場合でも、簡単にコーディングできます:
$ git Push Origin master --force
または
$ git Push Origin master -f
通常、ファイルを複製するときにREADMEソートされます。
他の誰か(同僚など)が、ローカルのmaster
ブランチにないコミットをOrigin/master
に入れており、ローカルブランチからサーバーにコミットをプッシュしようとしている可能性があります。 99%の場合、Origin
から作業を消去したくないと仮定すると、2つのオプションがあります。
2)変更をローカルブランチにマージし、マージ結果をプッシュします。 git checkout master git pull # resolve conflicts here git Push
(この場合、git pull
は基本的にgit fetch
とgit merge
にすぎないことに注意してください。)
1)ローカルブランチをリベースし、同僚が最初にコミットしてから、コミットしたように見えるようにします。これにより、コミット履歴が適切かつ線形に保たれ、「マージコミット」が回避されます。ただし、同僚の変更と競合する場合は、最悪の場合、(1回ではなく)コミットごとに競合を解決する必要があります。基本的にこれは他のすべての人にとってはより良いですが、あなたにとってはより多くの努力です。 git pull --rebase # resolve conflicts here git Push
(git pull --rebase
は本質的にgit fetch
およびgit rebase Origin/master
であることに注意してください。)
エラーは、マージブランチが原因である可能性があります。
これに従ってください:
ステップ1:git pull Origin master
(メッセージが表示された場合は無視してください)
ステップ2:git add .
ステップ3:git commit -m 'your commit message'
ステップ4:git Push Origin master
これは私のために働く
git init
git add --all
3.git commit -m "name"
4.git Push Origin master --force