2017-01-18 162 views
1

有人不小心删除了我的团队中的alpha分支。如何恢复远程分支git?

我有远程分支的起源/阿尔法。我无法使用git ls-remote找到这个origin/alpha分支。

我知道最后一次我提交的是原始/ alpha分支上的XYZ。我有那个分支的SHA。

我想创建一个使用此SHA的新分支。我用git checkout 45430f8834b0ebda6e89668cc4a4ba3f6a2067a4。

后,我试图用git结账退房新的分支B [NEW_BRANCH]

我想与git拉这个分支。但我得到以下错误

There is no tracking information for the current branch. 
Please specify which branch you want to merge with. 
See git-pull(1) for details. 

git pull <remote> <branch> 

If you wish to set tracking information for this branch you can do so with: 

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

任何想法,我怎么能恢复我的远程分支,我不能够在git的LS-远程看到的。

+0

你或者运行'首先git的结帐-b',或名称分支'git的branch'。 – 0andriy

+0

我已经命名它,但命名后...如果我做混帐拉我得到以下错误。 – Samir

+0

是的,你必须将你的本地分支链接到远程分支。引用文字的最后一行显示您需要的内容。 – 0andriy

回答

4

既然你跟踪分支,只是推说:

git push origin origin/alpha:refs/heads/alpha 

奇怪的语法是必要的,因为推动对填写refnames的拼写启发式......也许只是适当谨慎猜测你想要什么做一个远程回购。我对自己的电话很感兴趣,但无论如何,origin/alpha都会解决您的回购refs/remotes/origin/alpha ref,这是传统的原始码refs/heads/alpha的跟踪引用,但不会设置为将远程分支重置为异常类似于简单要做的事。我认为这很公平,因为这不是一种常见的操作,所以最好是强制目标ref在远程的全部拼写。

编辑:既然你有沙,你也可以

git push origin 45430f8834b0ebda6e89668cc4a4ba3f6a2067a4:refs/heads/alpha 
+2

请注意,如果您自己的'origin/alpha'解析为'45430f8 ...',则这两个命令将执行相同的操作。除了一些特殊情况下的魔法(自动查找名称是分支还是标签),'git push '和'git push '表示同样的事情。 – torek