首页 > 解决方案 > 在 bitbucket.org 上创建一个分支并检查它删除了我的代码

问题描述

所以我在 bitbucket 上创建了一个 repo,试图将我笔记本电脑上的本地代码推送到它,但它一直在写这个错误:

    To https://bitbucket.org/username/repo.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://username@bitbucket.org/username/repo.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

之后,我在 bitbucket.org 上创建了一个新分支并看到了这个:

查看您的分支

此分支不包含任何更改 - 在您的本地机器上检查它以做一些工作。

在 Sourcetree 中查看

您还可以使用此命令检查您的分支:

结帐命令:git fetch && git checkout test_branch

运行这些命令后,我的整个代码在我的本地机器上消失了。我该如何取回它?

要求的信息:

$ git reflog

MAC:thenestfour mac$ git reflog
c47ec7f (HEAD -> test_branch, origin/test_branch, origin/master) HEAD@{0}: reset: moving to HEAD
c47ec7f (HEAD -> test_branch, origin/test_branch, origin/master) HEAD@{1}: reset: moving to HEAD
c47ec7f (HEAD -> test_branch, origin/test_branch, origin/master) HEAD@{2}: checkout: moving from master to test_branch
eb7abd8 (master) HEAD@{3}: commit (initial): secondtemplate for Omnibiz

我正在运行的命令将我的本地存储库推送到我的 Bitbucket 云存储库:

MAC:thenestfour mac$ git push origin test_branch

一切都是最新的 MAC:thenestfour mac$ git pull 当前分支没有跟踪信息。请指定要合并的分支。有关详细信息,请参阅 git-pull(1)。

git pull <remote> <branch>

如果您希望为此分支设置跟踪信息,您可以这样做:

git branch --set-upstream-to=origin/<branch> master

MAC:thenestfour mac$ git push fatal: 当前分支master没有上游分支。要推送当前分支并将远程设置为上游,请使用

git push --set-upstream origin master

MAC:thenestfour mac$ git push --set-upstream origin master 到https://bitbucket.org/username/repo.git ![rejected] master -> master (non-fast-forward) error: failed to push some refs to ' https://username@bitbucket.org/username/repo.git ' 提示:更新被拒绝,因为您当前的提示分支在提示后面:它的远程对应物。在再次推送之前集成远程更改(例如提示:'git pull ...')。提示:有关详细信息,请参阅“git push --help”中的“关于快进的说明”。

标签: gitbitbucket

解决方案


工作在主分支

的输出git reflog包括:

moving from master to test_branch

这表明您以前在 master 分支上。因此,要找回“丢失”的工作:

git checkout master

发生了什么

看起来通过 bitbucket.org 创建的分支(我不使用它,所以不确定)创建了一个空分支。因此,当在本地签出这个新分支时 - 它更新了本地工作副本以匹配即创建一个空目录。

将更改推送到 master

原来的错误是:

更新被拒绝,因为远程包含您在本地没有的工作

它接着说:

您可能希望在再次推送之前先集成远程更改(例如,'git pull ...')。

解决方案已经在响应中,即:

git checkout master # Just in case still on a different branch
git pull
git push

请参阅任何git 入门教程(其中有很多,找到一个您喜欢的)以熟悉正常的 git 工作流程。


推荐阅读