检索已删除或合并分支的内容或修改
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
假设在一个分支上进行了一些开发,在 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