2016-07-06 135 views
1

我向分支提交了三個提交併將它們各自推送到遠程。然後我需要壁球提交,所以我用:壓扁本地提交後推送到遠程分支失敗

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

在第二線,我得到了一個致命的錯誤:

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

我試着用git push --set-upstream origin [BRANCH-NAME]其建議的命令,但我被告知,當前分支的尖端在它的遠程對手的後面。回顧一下,這很有意義,因爲我目前位於本地分支的索引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 rebase -i很簡單)的提交。在壓扁後,用推力推動。