检索已删除或合并分支的内容或修改

Retrieving content or modification of a deleted or merged branch

假设在一个分支上进行了一些开发,在 Master 中创建、批准和合并了拉取请求,并且该分支已被删除。

是否可以检索在此分支中所做的修改,例如提取补丁?或者是否可以恢复分支以访问其内容?或者有没有我们可以使用标签实施的解决方法?

如果您知道该分支中任何提交的哈希,最好是最近的提交,那么您可以将分支恢复到您记得的哈希点。尝试做:

git checkout <hash> -b lost_branch

但是,这仅适用于在某个时刻实际包含已删除分支的存储库。您将需要 shell 以某种方式进入该服务器。

如果远程 git 存储库托管在 github 上,您可以导航到 url:

https://github.com/<username>/<repository>/commit/<hash>

从这里开始,你可以使用github的webUI创建一个PR来将丢失的历史合并到一个新的分支(或者master分支)

如果该分支已被删除,但已合并到 master,那么您可以恢复它,而无需求助于登录到其他机器。

git log --grep 'find some identifying text such as an issue number' master

如果您不知道提交消息的文本,但您知道旧分支名称(假设它是使用默认设置合并的)

git log --grep 'branchname' master

任何一个都会 return 受影响的提交,您可以通过

重新创建分支
git checkout -b branchname oldSHA1*
  • 对于合并提交的情况,您需要 oldSHA1^2

如果所有其他方法都失败了,请尝试搜索影响文件的提交,您知道这些文件已被丢失的分支更改。 (如果可能,使用不经常被其他分支修改的文件。)

git log master -- path/to/file