因此,我们发现自己处于一个远程分支被过早删除的情况下,我们仍然有未完成的提交,我们希望合并和恢复。我最初的想法是在最初的开发人员工作副本中执行以下操作:
> git checkout local-branch
> git branch --unset-upstream
> git push -u origin remote-branch然而,有问题的开发人员发现这并不起作用,因为他运行的系统安装了一个特别古老的Git版本,而安装一个较新的版本是不可行的:
git branch --unset-upstream
error: unknown option `unset-upstream'
usage: git branch [options] [-r | -a] [--merged | --no-merged]
or: git branch [options] [-l] [-f] <branchname> [<start-point>]
or: git branch [options] [-r] (-d | -D) <branchname>...
or: git branch [options] (-m | -M) [<oldbranch>] <newbranch>幸运的是,对我们来说,有问题的提交之前已经被推送到远程存储库,所以另一个拥有最新版本git的开发人员能够获取这些提交并将其合并到他们自己的本地分支版本中,从而恢复远程分支并允许我们合并它:
> git fetch origin <sha1hash>
> git checkout local-branch
> git merge <sha1hash>
> git branch --unset-upstream
> git push -u origin remote-branch然而,似乎应该有一种方法可以在原始开发人员存储库中取消设置上游分支,可能是通过编辑配置文件,从而允许原始开发人员恢复该分支。
那么,如何在不使用git branch --unset-upstream的情况下删除上游分支呢
发布于 2017-06-16 19:03:22
以分支master为例,运行git config --local -e并删除以下行:
[branch "master"]
remote = origin
merge = refs/heads/master或者只运行git config --remove-section branch.master (如果支持)。
https://stackoverflow.com/questions/44586470
复制相似问题