私は自分のプロジェクト(新しいリポジトリ内のすべてのファイル)をプッシュしようとしています。私は手順に従いますが、git Push -u Origin master
を押したときにこのエラーが発生します。
! [rejected] master -> master (non-fast-forward)
error: failed to Push some refs to '[email protected]:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git Push --help' for details.
私は何度もこのエラーに遭遇したので、どうすればいいのかわからない。
エラーメッセージが言うように:git pull
を試みる前にgit Push
。どうやらあなたのローカルブランチはあなたのトラッキングブランチと同期していないようです。
プロジェクトのルールやワークフローによっては、git pull --rebase
を使うこともできます。
これを試してください:git Push -f Origin master
このコマンドは私にはうまくいきました
git Push -f Origin master
このエラーを受け取りました。
ローカルのgitリポジトリを作成した後にgithubリポジトリを作成したので、githubにプッシュする前にローカルへの変更を受け入れる必要がありました。この場合の唯一の変更点は、githubリポジトリを作成する際のオプションのステップとして作成されたreadmeファイルです。
git pull https://github.com/*username*/*repository*.git master
リポジトリのURLは、プロジェクトのgithubページでここから取得します。
それから私は再初期化しました(これは必要ではないかもしれません)
git init
git add .
git commit -m "update"
それからプッシュ:
git Push
私はgithubで新しいリポジトリを作成し、私は同じ問題を抱えていましたが、引っ張っている間それも問題を抱えていたので、これは私にとって役に立ちました。
しかし、これはすべてがめちゃくちゃになる可能性があるのですでに多くのコードを持っているレポではお勧めできません。
git Push Origin master --force
git pull
が役に立たない場合は、おそらくあなたは自分の変更をプッシュしたことになり(A)、その後さらに変更を追加するためにgit commit --amend
を使いました(B)。したがって、gitはあなたが歴史を失うことができると考えています - それはAからのすべての変更を含んでいるにもかかわらず、Bを異なるコミットとして解釈します。
B
/
---X---A
誰もA
の後にリポジトリを変更しないのであれば、git Push --force
を実行できます。
しかし、他の人からA
の後に変更があった場合、
B
/
---X---A---C
次に、personをA
からB
に変更します(C
-> D
)。
B---D
/
---X---A---C
または手動で問題を解決してください。私はまだその方法を考えていませんでした。
このコマンドを使います。
git pull --allow-unrelated-histories <nick name of repository> <branch name>
好きです:
git pull --allow-unrelated-histories Origin master
このエラーは、プロジェクトに共通の祖先がない場合に発生します。
警告:
'git pull
'を選ぶのはALWAYS解決策ではないので注意してください。意図的にリポジトリの履歴を変更した場合は、この問題(Qに記載されているもの)に直面する可能性があります。その場合、gitはあなたの履歴の変更をあなたのリモートリポジトリの新しい変更と混同します。故に、あなたはgit Push --forceを選ぶべきです、なぜならgit pull
を呼び出すことはあなたがあなたの歴史に行ったすべての変更を意図的に元に戻すからです。
これは私がdevelopmentブランチにいて、masterブランチが最新のものではないときに起こりました。
そのため、DevelopブランチからPushをgitしようとしたときに、そのエラーが発生しました。
マスターブランチに切り替えてgit pullしてからブランチの展開とgit Pushに戻って修正しました。
$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git Push
このコマンドを試してみてください。 "git pull Origin master"
それは私のために働きました。
このリンクを確認してください。 https://help.github.com/articles/dealing-with-non-fast-forward-errors
! [拒否]マスター - >マスター(非早送り)
慌てないでください、これは非常に簡単に修正できます。あなたがしなければならないのはプルを発行することだけであり、あなたのブランチは早送りされるでしょう:
$ git pull myrepo master
それからあなたのプッシュを再試行すれば、すべてうまくいくはずです。
$ gitプッシュgithubマスター
これはあなたがあなたのマスターでいくつかの変更をしたのでプロジェクトがあなたに最初に引っ張るように頼むからです。とにかくプッシュしたい場合は、次のように入力してブルートフォースを使用できます。
git Push -f Origin master
変更を最初にコミットすることを忘れないでください。
git add .
git commit -m "Your commit message"
私は開発マシンでこの問題を抱えていました。 dev
ブランチはうまく機能していましたが、master
ブランチが私にくれました(dev
ブランチにいるときはgit Push
ing):
! [rejected] master -> master (non-fast-forward)
だから私は試してみました:
git checkout master
git pull
それは私に与えた:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.
私はマスターブランチが.git/config
から抜けているのを見つけて、加えました:
[branch "master"]
remote = Origin
merge = refs/heads/master
その後、git Push
もdev
ブランチでうまくいきました。
あなたがする必要があります
git branch
出力が次のようになっているとします。
* (no branch)
master
それから
git checkout master
チェックアウトするとコミットされていない変更がすべて失われるため、保留中のコミットがないことを確認してください。
これはあなたがそのマスターに対立する変更を加えたからです。そして、あなたのリポジトリサーバはこれらの言葉でそれをあなたに言うことができません、それはそれが彼があなたのためにこれらの衝突に対処する問題ではないのでこのエラーを与えます、のように?
1- git pull
これはあなたのコードをあなたのリポジトリからあなたのサイトマスターのあなたのコードにマージします。だから衝突が見られます。
2 - これらのmanualementeの矛盾を扱います。
3-
git Push Origin master
そして、その前に、あなたの問題は解決されました。
私は問題と同じでした。私はGit Tortoiseを使っています。ただ右クリック - >亀Git - >クリーンアップ。今、あなたはGithubにプッシュすることができますそれは私とうまくいった:D
私はこの問題を解決することができた唯一の唯一のローカルとGitレポを削除し、両端で同じを作成することでした。今のところうまくいきます。
Herokuにプッシュしようとしているときに誰かがこのエラーを持っているならば、ちょうどこのように 'Origin'を 'heroku'に置き換えてください:git Push -f heroku master