2016-07-06 4 views
1

ブランチに対して3つのコミットを行い、それぞれをリモートにプッシュしました。私はその後、コミットを潰すために必要なので、私が使用:私はgit push --set-upstream origin [BRANCH-NAME]とその提案のコマンドを試してみましたが、ことを言われていますローカルコミットを破棄した後にリモートブランチに失敗する

The current branch [BRANCH-NAME] has no upstream branch. 
To push the current branch and set the remote as upstream. 

git reset --soft HEAD~3 && git commit 
git push --force 

を二行目で、私は致命的なエラーが発生しました現在のブランチの先端は遠隔の相手の後ろにあります。私が現地の支店のインデックス1にいて、ヘッドがリモートのインデックス3にあるとき、私は現在、それを見ていると意味があります。

私が今やってみたいのは、基本的に、リモートにある潰れていないバージョンの代わりに(私がローカルに持っている)ブランチの潰れたバージョンを置き換えることです。ここで正しいアプローチは何ですか?

私はthisと他のいくつかを見てきましたが、助けにはなりませんでした。

答えて

2

あなたは、そのコマンドを提案へ--forceを追加する必要があります。

git push --set-upstream --force origin [BRANCH-NAME] 

あなたは--set-upstreamでそれを実行した後、あなたはちょうどその上からgit push(またはgit push -f必要)を入力できるようになります。

+0

フォースプッシュはそのブランチの外側には影響しません。私はこの枝で働いている唯一の人ですが、マスターに取り組んでいる人は数多くいますし、自分の仕事に影響を与えたくありません。 – NeonBlueHair

+0

いいえ、ブランチ名を指定しているので、それがプッシュされる唯一のものです。ブランチ名としてmasterと入力しないでください; – jonnystoten

+0

そのように見えます。救命救助者だった、ありがとう! – NeonBlueHair

0

これらの変更がリモートにコミットされたので、gitの履歴を書き直す必要があります。一般的には、絶対にしなければ履歴を書き換えないでください。簡単なコミットをすることは、コミットを押しつぶす理由ではありません。彼らが滞在できるなら、彼らは滞在させてください。

gitリモートリポジトリの場合は、先に進めたいと思うなら、あなたのローカルリポジトリのコミットをスカッシュしていると思います(git rebase -iは簡単です)。スカッシュの後、-fを押して強制的に押します。

関連する問題