web-dev-qa-db-ja.com

Git Pushは「非早送り」を拒否しました

gitは初めてですが、チーム環境でコードを管理するために現在使用しています。いくつかのリベースの問題があり、それを使用して修正しました

git checkout --ours filename.txt
git add filename.txt
git rebase --continue

今、私は自分の変更をプッシュしたいので、次のコマンドを実行します

$ git Push Origin feature/my_feature_branch

次のエラーが表示されます:

To ssh://[email protected]:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to Push some refs to 'ssh://[email protected]:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git Push --help' for details.

エラーを取り除くにはどうすればよいですか?

追伸:--forceオプションの使用は可能な限り避けています。

61
Frankline

誰かがあなたの最後のgit fetchgit Pushの間に新しいコミットをプッシュしたようです。この場合、手順を繰り返して、もう一度my_feature_branchをリ​​ベースする必要があります。

git fetch
git rebase feature/my_feature_branch
git Push Origin feature/my_feature_branch

git fetchの後、gitk --allの状況を調べることをお勧めします。

59
Boris Brodski

リベースまたは誰かが新しい変更をプッシュする前に、リモートの変更をフェッチしなかった可能性があります(リベースしてプッシュしようとしたとき)。次の手順を試してください。

#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch 
git fetch Origin feature/my_feature_branch:tmp

#rebasing on local 'tmp' branch
git rebase tmp

#pushing local changes to the remote
git Push Origin HEAD:feature/my_feature_branch

#removing temporary created 'tmp' branch
git branch -D tmp
20
Engineer

この問題がありました!私は試しました:git fetch + git merge、しかし解決されません!私が試した:git pull、また解決してはいけない

次に、私はこれを試して問題を解決しました(エンジニアの答えに似ています):

git fetch Origin master:tmp
git rebase tmp
git Push Origin HEAD:master
git branch -D tmp
9
Aurelio A

私はパーティーに遅れましたが、 githubヘルプページ でいくつかの有用な指示を見つけました。ここでそれらを共有したいと思いました。

Gitは、コミットを失うことなく、リモートリポジトリに変更を加えることができない場合があります。これが発生すると、プッシュは拒否されます。

他の人があなたと同じブランチにプッシュした場合、Gitはあなたの変更をプッシュできません:

$ git Push Origin master
To https://github.com/USERNAME/REPOSITORY.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to Push some refs to 'https://github.com/USERNAME/REPOSITORY.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 fetch Origin
# Fetches updates made to an online repository
$ git merge Origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

または、単にgit pullを使用して、両方のコマンドを一度に実行できます。

$ git pull Origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work
4
Bilal

私は同様の問題を抱えていましたが、私はそれを解決しました:git pull Origin

2
William Rossier

共有ローカルリポジトリの書き込みロック

私はこの問題を抱えていましたが、上記のアドバイスは私を助けませんでした。すべてを正しく取得できました。しかし、プッシュは常に失敗しました。これは、Windowsディレクトリにあるローカルリポジトリであり、複数のクライアントがVMWare共有フォルダードライバーを介して操作していました。システムの1つがGitリポジトリを書き込み用にロックしているようです。関連するVMWareシステムを停止した後、ロックがすべて修復された。どのシステムがエラーの原因かを判断することはほとんど不可能であったため、成功するまでそれらを1つずつ停止する必要がありました。

1
Boris Zinchenko

私はここでアドバイスを使用しましたが、ローカルコードを直接マスターにマージしたので、私を台無しにしました。 ....それを塩の粒ですべて取りなさい。私の同僚は、以下が私のブランチを再特定するために必要な問題の解決に役立ったと言いました。

 git branch --set-upstream-to=Origin/feature/my-current-branch feature/my-current-branch
1
Mike Q

Eclipseで以下を実行します。

GITリポジトリ>リモート> Origin>右クリックして発言

GITリポジトリ>リモートトラッキング>ブランチを選択してマージと言います

プロジェクトに移動し、ファイルを右クリックして、「アップストリームから取得」と言います。

0
MansoorShaikh