0

GitHub に Git リポジトリを作成し、ローカル リポジトリも作成しました。まず、リモート リポジトリをローカル リポジトリにプルしました。次に、ファイルを追加し、ファイルをステージングしてコミットし、リモート リポジトリへのプッシュを再度試みましたが、次のメッセージが表示されて失敗しました。

https://github.com/jjenkov/java-utils へのプッシュ
https://github.com/jjenkov/java-utils へ
 ! [拒否] マスター -> マスター (非早送り)
エラー: 一部の参照を「https://github.com/jjenkov/java-utils」にプッシュできませんでした
ヒント: 現在のブランチのヒントが遅れているため、更新は拒否されました
ヒント: そのリモートの相手。リモートの変更をマージします (例: 'git pull')
ヒント: もう一度押す前に。
ヒント: 詳細については、「git push --help」の「早送りに関する注意」を参照してください。

私は Git と Github にまったく慣れていないので、何か間違ったことをしているのかもしれません。リモート リポジトリをローカル リポジトリに「フェッチ」しましたが、リモート リポジトリは空である必要があります (GitHub によって生成された readme ファイルを除く)。

問題が何であるか、または解決策をどこで読めるか知っている人はいますか?

4

2 に答える 2

1

リモート リポジトリは空ではありません。READMEこれには、おそらく GitHub Web インターフェイスを介して作成した が含まれています。プッシュする前にプルする必要があります。

git pull --rebase origin master
git push

(これ--rebaseは厳密には必要ではありませんが、醜いマージ コミットを回避します。)

于 2013-02-15T15:49:46.307 に答える
0

非早送りプッシュは、リモートmasterがローカルの先祖ではないことを意味しますmaster。Git は、作業の破壊を防ぐための安全メカニズムとしてプッシュを拒否しています。

の出力によりgit log --graph --decorate --pretty=oneline --abbrev-commit --all、リポジトリの履歴がグラフィカルに表示されます。GitHub にあるものを置き換えたり破棄したりしても構わないと確信している場合は、次を実行します。

$ git push --force origin master

オプションは次の--forceように文書化されています(強調を追加)

-f、 通常、コマンドは、上書きに使用されたローカル ref の先祖ではないリモート ref の更新を拒否します。このフラグはチェックを無効にします。これにより、リモート リポジトリがコミットを失う可能性があります。注意して使用してください。--force

そこにあるものを保持するには、ローカル マスターを GitHub のマスターにリベースしてから、結果をプッシュする必要があります。

$ git fetch
$ git rebase origin/master master
$ git push origin master

あるいは単に

$ git checkout master
$ git pull --rebase

上記のシーケンスは晴れた日の場合です。競合を解決する必要があるかもしれませんが、あなたの説明を考えるとそれはありそうにありません。

于 2013-02-15T16:03:46.993 に答える