有没有,git创建无意中名字起错了,分支上传错了,想删除了?删除做了想恢复了?远程与本地都删除了要恢复的情况呢?如果有,那么一下内容获取你会感兴趣。

删除分支

有的时候可能会遇到需要删除git的branch的情况,那么要如何去删除呢,删除分支可以分为2种情况。

删除本地分支(git branch -D branchName)

删除服务端分支 (git push origin –delete branchName)

  1. 第一种情况
    当出入删除本地分支命令时,bash中会返回如下内容

    1
    2
    $ git branch -D trunk.201705
    Deleted branch trunk.201705 (was 9cc0374).
  2. 第二种情况
    当决定删除服务端分支时,一定要慎重,bash中会返回如下内容

    1
    2
    3
    4
    $ git push origin –delete trunk.201705
    remote: Updating references: 100% (1/1)
    To http://source.jd.com/app/webpack-scaffold.git
    – [deleted] trunk.201705

恢复分支

当你只删除本地的时候,可以重新从git服务器上clone一份,大家也都会如此操作,但是,如果你无意中把服务器端的所有分支都删除掉了,那要如何来恢复呢?因为分支删除后,git中是不存在提交记录查询的了。如果真有次误操作,大家不要着急,恢复方法如下:

第一步,输入命令

1
2
3
4
5
6
$ git log -g
commit 97b5c828cd4f2214cfa33be31867dbf34b48e547
Reflog: HEAD@{0} (Git账号<Git密码>)
Reflog message: checkout: moving from trunk.201704 to master
Author: Git账号<Git密码>
Date: Thu May 25 11:22:23 2017 +0800

提交记录的备注

1
2
3
4
5
commit 77bd9ed5507a774e579f67e348e338093dd68252
Reflog: HEAD@{1} (Git账号<Git密码>)
Reflog message: checkout: moving from master to trunk.201704
Author: Git账号 <Git密码>
Date: Thu May 25 11:21:06 2017 +0800

提交记录的备注

此命令会从本地的代码库中查询到你的所有提交记录

第二步:还原到对应的commit代码中去,蓝色的内容为commit-id,可以通过此ID来指定恢复的版本,使用如下命令

1
$ git branch trunk.201704 77bd9ed5507a774e579f67e348e338093dd68252

此命令会在对应的项目中创建一个分支,名字为trunk.201704,此分支的代码为后面commit-id对应的代码内容。

第三步: 查看一下分支内容吧,

1
2
3
4
5
6
7
$ git branch -a
Branch_trunk.201704
master
trunk.201704
* trunk.201705
remotes/origin/HEAD -> origin/master
remotes/origin/master

是不是发现本地多了一个分支。

第四步:那么可以将此代码上传到服务器了,可以在服务器端新建一个分支,然后清空,将还原的分支内容copy进去,在push,则可以成功的还原到之前的版本了。

当然大家在操作的时候,切记要慎重,不要轻易删除git服务端的分支代码。

PS:以上代码块内容中标红内容为命令,其他内容为执行命令后的返回内容。