如何解决是否可以比较同一个存储库的两个版本的远程?
这个问题与 Git、SourceTree 和 Bitbucket 相关。
一个分支被意外从 bitbucket 上的远程删除,直到几个月后才被发现。名称和提交号未知,但很明显,一些信息被删除了,应该存在于一个分支中,可能更多。
在一台计算机上有一个旧版本的存储库,它有很长一段时间没有用 fetch 更新,所以它对远程来说已经过时了。它包含在远程删除的分支的可能性很小。如何将这个旧存储库副本与远程存储库副本进行比较,以查看其中一个而不是另一个中存在哪些提交?我无法比较分支,因为远程分支被意外删除。也许有一种方法可以测试分支是否存在于一个而不是另一个中?
解决方法
在“仍然具有旧版本的那个克隆”上,您可以确保保留指向远程分支的指针:
- 您可以使用
git branch -r
或git for-each-ref
列出该克隆已知的远程分支(该命令在脚本中使用时具有更可预测的输出):
# this will list all the existing 'remote branches' from origin known to a local repo :
git for-each-ref --format="%(refname)" refs/remotes/origin
# you can drop the leading 'refs/remotes/origin' from each line :
git for-each-ref --format="%(refname:lstrip=3)" refs/remotes/origin
- 根据上述命令的输出,您可以创建指向其当前状态的分支或标签:
git for-each-ref --format="%(refname:lstrip=3)" refs/remotes/origin |\
while read br; do
# create a branch named 'backup/foo' pointing to 'origin/foo' :
git branch backup/$br origin/$br
done
您现在可以更新远程分支 (git fetch
),并将 origin/*
与 backup/*
进行比较
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。