2017-06-10 6 views
0

新しい変更をリポジトリにプッシュする必要があります。私は.を追加してコミットを作成しました。私はgitでプルとプッシュスローの両方のエラーが発生するのはなぜですか?

$ git push origin master 

を入力すると、それはエラーをスローし、(ヒントなど)pull最初に述べています。しかし、pullの場合、再びエラーを投げ、fetchについて話します。正直なところ私は混乱しています。私は今どうすればいい?

enter image description here

+0

変更をプッシュしたい最悪のシナリオでは、 '-f'フラグを使用できます。例: 'git push -f origin master'です。あなたのケースでは、私はあなたが変更をコミットした後、それがあなたをプッシュすることを許可していないマスターについては、あなたの支店を更新していないと思う。 '-f'は強制的に' push'コマンドを強制する強制フラグです。 –

+0

'git pull'を使うと' git fetch'が実行され、 'git merge'が実行されます。フェッチ・ステップは機能していますが、すでに完了しておらず、中止していないマージをすでに行っているため、マージ・ステップは失敗しています。これらの他のコマンドの両方を理解するまで、 'git pull'を完全に避けることをお勧めします。 (フェッチは簡単です:あなたがすでに見ているように、マージは難しいものです) – torek

+0

[あなたはマージを完了していません(MERGE \ _HEADは存在します)](https://stackoverflow.com/questions/11646107/you -have-not-endedded-your-merge-merge-head-exists) – max630

答えて

0

続いリモート/マスターの背後にあるとして、マスターに最新の変更を取得するにはgitのプル、行わthatsの。これは、これらのブランチのそれぞれが共通の先祖コミットを共有している間に、各ブランチが異なる後続のコミットを追加したことを意味します。それはMコミットリモートCの上にコミット適用する方法を知っていないため、Gitがプッシュを拒否され

remote: ... A -- B -- C 
        \ 
local: ...  M -- N 

:ここでは、ローカルとリモートのmaster枝がどのように見えるかを示す小さなサンプル図です。ベースは異なるので、これを修正するために引っ張るように指示するエラーが表示されます。

git pullを実行するのは正しいですが、ブランチステートmaster|MERGINGは、すでに別のマージの途中であることを意味します。恐らく既にあなたは一度引っ張ってしまっていますが、今解決しなければならないマージの競合があります。 git statusを実行すると、競合しているファイルを見つけることができます。すべての競合を解決し、git add各ファイルの後にgit commitが続きます。これらの手順を実行した後、git pushが動作するはずです。

0

あなたには、いくつかのマージ競合が発生した、とまだまだそれを解決していないからです。

git checkout -f # or git stash if you want to preserve the changes 
git checkout master # just to make sure some rebase is not going on 
git pull origin master 
# Now resolve merge conflicts, add the files and commit. 
git push origin master 
0

git statusを実行すると、非表示ファイルが表示されます。あなたは今のところgit stash save <patch_name>でそれらを保存するか、必要に応じてそれらの変更をコミットすることができます。一度リモコンの最寄りのmasterとバージョンがを分岐しているので、あなたのブランチが機能していないプッシュあなたの先端がGitのプッシュ

0

あなたは、任意の上演、国連や紛争のファイルが持っているかどうかを確認するために最初の状態を確認することができます

git status 

それを修正し、それをコミットした後、あなたは元のマスタから再び引き出すことができます。

git add -A 
git commit 
git pull origin master 
関連する問題