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
オプションの使用は可能な限り避けています。
誰かがあなたの最後のgit fetch
とgit Push
の間に新しいコミットをプッシュしたようです。この場合、手順を繰り返して、もう一度my_feature_branch
をリベースする必要があります。
git fetch
git rebase feature/my_feature_branch
git Push Origin feature/my_feature_branch
git fetch
の後、gitk --all
の状況を調べることをお勧めします。
リベースまたは誰かが新しい変更をプッシュする前に、リモートの変更をフェッチしなかった可能性があります(リベースしてプッシュしようとしたとき)。次の手順を試してください。
#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
この問題がありました!私は試しました:git fetch + git merge、しかし解決されません!私が試した:git pull、また解決してはいけない
次に、私はこれを試して問題を解決しました(エンジニアの答えに似ています):
git fetch Origin master:tmp
git rebase tmp
git Push Origin HEAD:master
git branch -D tmp
私はパーティーに遅れましたが、 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
私は同様の問題を抱えていましたが、私はそれを解決しました:git pull Origin
私はこの問題を抱えていましたが、上記のアドバイスは私を助けませんでした。すべてを正しく取得できました。しかし、プッシュは常に失敗しました。これは、Windowsディレクトリにあるローカルリポジトリであり、複数のクライアントがVMWare共有フォルダードライバーを介して操作していました。システムの1つがGitリポジトリを書き込み用にロックしているようです。関連するVMWareシステムを停止した後、ロックがすべて修復された。どのシステムがエラーの原因かを判断することはほとんど不可能であったため、成功するまでそれらを1つずつ停止する必要がありました。
私はここでアドバイスを使用しましたが、ローカルコードを直接マスターにマージしたので、私を台無しにしました。 ....それを塩の粒ですべて取りなさい。私の同僚は、以下が私のブランチを再特定するために必要な問題の解決に役立ったと言いました。
git branch --set-upstream-to=Origin/feature/my-current-branch feature/my-current-branch
Eclipseで以下を実行します。
GITリポジトリ>リモート> Origin>右クリックして発言
GITリポジトリ>リモートトラッキング>ブランチを選択してマージと言います
プロジェクトに移動し、ファイルを右クリックして、「アップストリームから取得」と言います。