Git 斜线分支错误及恢复

Git slash branch mistake and recovery

使用 Git 我创建了一个名为 "Development/TOTS" 的本地分支并尝试将其推送到远程仓库。

已经有一个名为"Development"的远程分支,推送后出现这个错误:

$ git push origin Development/TOTS Total 0 (delta 0), reused 0 (delta 0) To https://git-codecommit.ap-southeast-2.amazonaws.com/v1/repos/my_repo * [new branch] Development/TOTS -> Development/TOTS error: update_ref failed for ref 'refs/remotes/origin/Development/TOTS': cannot lock ref 'refs/remotes/origin/Development/TOTS': 'refs/remotes/origin/Development' exists; cannot create 'refs/remotes/origin/Development/TOTS'

然后我 hastily/unwisely 在 SourceTree GUI 中尝试了相同的推送。使用此方法没有明显错误。

"Development" 分支的所有者现在说他们在尝试从中提取时遇到错误。

但我仍然可以在远程仓库(AWS codecommit 控制台)和另一个本地仓库(早一天)中看到他们的 "Development" 分支。 "Development" 中的代码看起来很旧。所以想知道我是否有可能通过 "Development/TOTS"?

的推动删除了它的部分近期历史记录

如果我删除我的 "Development/TOTS" 分支,他们的 Development 分支会恢复到原来的样子吗? (即没有拉错误)。

我查看了 Using the slash character in Git branch name,但 "Development" 分支仍然存在于远程的事实似乎与建议不符。

谢谢。

So wondering is there a chance I've deleted part of its recent history by my push of "Development/TOTS"?

没有。即使您有,该代码仍会出现在 remote repo reflog.

在 AWS codecommit 控制台中:

  • 检查git branch有哪些分支。
  • 同时检查 reflog,以查看最新的 Development 分支提交。
  • 尝试删除 Development/TOTS 分支(在远程服务器端),如果它确实存在 git branch -d Development/TOTS