源树推送:提示:更新被拒绝,因为当前分支的提示落后

时间:2016-06-20 18:09:06

标签: git commit atlassian-sourcetree

我正在尝试使用Source Tree推送我的应用程序。

我将应用程序(本地)还原为旧版本,进行了一些更改,现在我想再次推送,但是我收到了这个错误:

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags --set-upstream origin dev:dev
Pushing to https://user@bitbucket.org/hykaruz/assist-ponto.git
To https://user@bitbucket.org/hykaruz/project.git
 ! [rejected]        dev -> dev (non-fast-forward)



error: failed to push some refs to 'https:/User:bitbucket.org/hykaruz/Project.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

感谢您的帮助。

PS。我的版本太旧了,我必须下载最后一个版本然后我可以提交并推送我的应用程序,所以如果你得到相同的问题结帐如果你没有任何版本更新。

2 个答案:

答案 0 :(得分:1)

因为您的提交历史与上游存储库不同(您没有添加更多提交),git拒绝推送更改,因为您可能会以这种方式丢失工作

如果您确定要使用自己的库覆盖上游存储库历史记录(例如,您是唯一一个推送到该存储库的人),则必须添加-f以强制推送。

答案 1 :(得分:0)

就我完全相同的错误而言,我不是唯一的开发人员。

因此,我同时提交并推送了更改,如Commit对话框弹出窗口的底部所示:

Checked option for: Push changes immediately to origin

...但是我犯了一个重大错误,就是忘记按Fetch按钮来查看是否有最新消息,而我没有。

提交成功执行,但是不是推送,而是给出了相同的错误; ...即使其他开发人员没有像我一样更改相同的文件,由于出现相同的错误,我也无法更新最新的信息。

GUI解决方案

大多数时候,我更喜欢使用Sourcetree的 GUI(图形用户界面)。该解决方案可能并不理想,但是,这又使我再次受益匪浅,而不必担心我可能会丢失所做的更改或损害其他开发人员的最新更新。

STEP 1

在您之前右键单击提交,以撤消本地提交的更改,然后像这样选择Reset current branch to this commit

Sourcetree window with right-clicked commit and selecting: Reset current branch to this commit

STEP 2

一旦所有正在加载的微调器消失,并且Sourcetree完成了加载上一次提交的工作,请在窗口的左上方单击Pull按钮...

Sourcetree window with with the Pull button highlighted

...,然后将出现一个对话框弹出窗口,然后单击右下角的 OK 按钮:

Sourcetree window dialog popup with the OK button highlighted

步骤3

获取最新消息后,如果没有出现任何错误,请跳至 STEP 4 (下面的下一步)。否则,如果您此时发现任何合并冲突,例如我对Web.config文件所做的操作:

Sourcetree window showing the error hint: Updates were rejected because the tip of your current branch is behind

...然后单击顶部的Stash按钮,将出现一个对话框弹出窗口,您需要输入更改的描述性名称,然后单击 {{ 1}} 按钮:

Sourcetree window with Stash button highlighted and dialog popup showing input to name your stash with OK button highlighted

...一旦Sourcetree完成,就存储了更改的文件,在 STEP 2 中重复操作(上面的上一步),然后本地文件将进行最新更改。现在,您可以通过以下方法重新应用您的更改:打开在Sourcetree左列底部看到的OK,使用箭头展开隐藏部分,然后右键单击以选择STASHES,然后选择 {{ 1}} 出现的对话框弹出窗口中的按钮:

Sourcetree window with the Stashes section expanded and changes right-clicked with Apply Stash highlighted

Sourcetree dialog popup ask your to confirm if you would like to apply stash you your local copy

如果您现在有任何合并冲突,请转到首选的文本编辑器,例如Visual Studio Code,然后在受影响的文件中选择Apply Stash 'Descriptive-name-of-your-changes'链接,然后保存:

enter image description here

然后返回Sourcetree,单击顶部的OK按钮:

enter image description here

然后右键单击有冲突的文件,然后在Accept Incoming Change下选择Commit选项:

enter image description here

步骤4

最后!!!现在,我们可以提交文件,还可以在单​​击Resolve Conflicts按钮之前选中Mark Resolved选项:

enter image description here

P.S。在撰写本文时,另一位开发人员在我提交之前就提交了提交,因此不得不重复很多步骤。